Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];

Вниз

индикатор загрузки отправки   Найти похожие ветки 

 
mikola   (2007-12-24 07:57) [0]

дорогие гуру оч прошу помочь ибо если не успею до 25 сделать прогу не попаду к семье на новый год :((
проблема 1 делаю в проге загрузку/отправку  файлов на фтп (использую инди) нужно реализовать такую штуку - пока идет load/download файлов пользователь видел индикатор загрузки/получения файлов и не мог работать с прогой
проблема 2 нужен какой нить компонент который делает сжатие картинок (стандартная компрессия дает плохое качество)
если есть возможность сопроводите ответы кодом..


 
Riply ©   (2007-12-24 10:13) [1]

> [0] mikola   (24.12.07 07:57)
> ибо если не успею до 25 сделать прогу не попаду к семье на новый год

А сами мы не местные ?

> если есть возможность сопроводите ответы кодом..

Бросить свою работу(книжку, отдых) и писать за тебя код,
потому что ты изволил гулять весь год ?


 
clickmaker ©   (2007-12-24 12:06) [2]


> если не успею до 25 сделать прогу не попаду к семье на новый
> год

прослезилсо


 
Deva4kA   (2007-12-24 12:20) [3]

Ты нашел у кого спрашивать, они здесь все зазвездившиеся, только издеваться умеют, гуру- это ты их оч превознес, почти к небесам, они сами нифига не знают, выпендриваются!!!


 
Kolan ©   (2007-12-24 12:28) [4]

> выпендриваются

Угу, ненадо сюда ходить с такими «вопросами»&#133 :)


 
{RASkov} ©   (2007-12-24 12:50) [5]

> [3] Deva4kA   (24.12.07 12:20)
> Ты нашел у кого спрашивать, они здесь все зазвездившиеся,
> только издеваться умеют, гуру- это ты их оч превознес,
> почти к небесам, они сами нифига не знают, выпендриваются!!!

И девАчек здесь не любят.... :(

Ты б в место того, что б заступаться, написал(а) бы программу(компонент) человеку по сжатию граф. файлов.
А то видишь ли у него проблемка с этим :) А то, что "умы планеты", над этим бьются....
Что там нам этот джепег.... подумаешь..... мы сейчас раз плюнуть сделаем круче)
:о)


 
Deva4kA   (2007-12-24 13:11) [6]


> И девАчек здесь не любят.... :(

Ну и ЛЮБИ только мальчикАФ!!!


 
{RASkov} ©   (2007-12-24 13:26) [7]

> [6] Deva4kA   (24.12.07 13:11)

:)
Я всех люблю) И тебя тоже)))


 
clickmaker ©   (2007-12-24 13:28) [8]

развели тут... порнографию )


 
mikola   (2007-12-24 13:34) [9]

1

> потому что ты изволил гулять весь год ?

ну во первых задача была мне поставленна в пятницу и спать мне в выходные не пришлось
2

> прослезилсо

можете не плакать билеты уже сдал
3

> А то, что "умы планеты", над этим бьются....
> Что там нам этот джепег.... подумаешь..... мы сейчас раз
> плюнуть сделаем круче)

здесь мне кажется вы показываете свою не компетентность, ибо лучьшие умы планеты бьются над изобретением вакцины от СПИДА, или над получением энергии путем холодного термоядерного синтеза, спешу сообщить что "ученые и лучьшие умы мира" уже лет несколько как ребята из фотошота решили эту проблемму - запускаете Photoshop  - открываете картинку - файл - сохранить для web - и затем выбрать значение от 1 до 100 в оптимизации изображения, и не плохо у них там это получилось, хотя возможно теперь "лучьшие умы" бьються над тем как это реализовать в виде какого нибудь компонента ...
возможно и то что я не понятно разъяснил что за оптимизация картинок мне необходима - тогда извините..


 
clickmaker ©   (2007-12-24 13:45) [10]


> возможно и то что я не понятно разъяснил что за оптимизация
> картинок мне необходима


см. SetStretchBltMode(Canvas.Handle, HALFTONE) и StretchBlt()


 
mikola   (2007-12-24 14:03) [11]


> clickmaker

спасибо
вот если кому нужно
нашел
procedure MakeThumbNail(const Src, Dest: TBitmap);
type
 PRGB24 = ^TRGB24;
 TRGB24 = packed record
   B: Byte;
   G: Byte;
   R: Byte;
 end;
var
 x, y, ix, iy: integer;
 x1, x2, x3: integer;

 xscale, yscale: single;
 iRed, iGrn, iBlu, iRatio: Longword;
 p, c1, c2, c3, c4, c5: tRGB24;
 pt, pt1: pRGB24;
 iSrc, iDst, s1: integer;
 i, j, r, g, b, tmpY: integer;

 RowDest, RowSource, RowSourceStart: integer;
 w, h: integer;
 dxmin, dymin: integer;
 ny1, ny2, ny3: integer;
 dx, dy: integer;
 lutX, lutY: array of integer;
begin
 if src.PixelFormat <> pf24bit then src.PixelFormat := pf24bit;
 if dest.PixelFormat <> pf24bit then dest.PixelFormat := pf24bit;
 w := Dest.Width;
 h := Dest.Height;

 if (src.Width <= dest.Width) and (src.Height <= dest.Height) then
 begin
   dest.Assign(src);
   exit;
 end;

 iDst := (w * 24 + 31) and not 31;
 iDst := iDst div 8; //BytesPerScanline
 iSrc := (Src.Width * 24 + 31) and not 31;
 iSrc := iSrc div 8;

 xscale := 1 / (w / src.Width);
 yscale := 1 / (h / src.Height);

 // X lookup table
 SetLength(lutX, w);
 x1 := 0;
 x2 := trunc(xscale);
 for x := 0 to w - 1 do
 begin
   lutX[x] := x2 - x1;
   x1 := x2;
   x2 := trunc((x + 2) * xscale);
 end;

 // Y lookup table
 SetLength(lutY, h);
 x1 := 0;
 x2 := trunc(yscale);
 for x := 0 to h - 1 do
 begin
   lutY[x] := x2 - x1;
   x1 := x2;
   x2 := trunc((x + 2) * yscale);
 end;

 dec(w);
 dec(h);
 RowDest := integer(Dest.Scanline[0]);
 RowSourceStart := integer(Src.Scanline[0]);
 RowSource := RowSourceStart;
 for y := 0 to h do
 begin
   dy := lutY[y];
   x1 := 0;
   x3 := 0;
   for x := 0 to w do
   begin
     dx:= lutX[x];
     iRed:= 0;
     iGrn:= 0;
     iBlu:= 0;
     RowSource := RowSourceStart;
     for iy := 1 to dy do
     begin
       pt := PRGB24(RowSource + x1);
       for ix := 1 to dx do
       begin
         iRed := iRed + pt.R;
         iGrn := iGrn + pt.G;
         iBlu := iBlu + pt.B;
         inc(pt);
       end;
       RowSource := RowSource - iSrc;
     end;
     iRatio := 65535 div (dx * dy);
     pt1 := PRGB24(RowDest + x3);
     pt1.R := (iRed * iRatio) shr 16;
     pt1.G := (iGrn * iRatio) shr 16;
     pt1.B := (iBlu * iRatio) shr 16;
     x1 := x1 + 3 * dx;
     inc(x3,3);
   end;
   RowDest := RowDest - iDst;
   RowSourceStart := RowSource;
 end;

 if dest.Height < 3 then exit;

 // Sharpening...
 s1 := integer(dest.ScanLine[0]);
 iDst := integer(dest.ScanLine[1]) - s1;
 ny1 := Integer(s1);
 ny2 := ny1 + iDst;
 ny3 := ny2 + iDst;
 for y := 1 to dest.Height - 2 do
 begin
   for x := 0 to dest.Width - 3 do
   begin
     x1 := x * 3;
     x2 := x1 + 3;
     x3 := x1 + 6;

     c1 := pRGB24(ny1 + x1)^;
     c2 := pRGB24(ny1 + x3)^;
     c3 := pRGB24(ny2 + x2)^;
     c4 := pRGB24(ny3 + x1)^;
     c5 := pRGB24(ny3 + x3)^;

     r := (c1.R + c2.R + (c3.R * -12) + c4.R + c5.R) div -8;
     g := (c1.G + c2.G + (c3.G * -12) + c4.G + c5.G) div -8;
     b := (c1.B + c2.B + (c3.B * -12) + c4.B + c5.B) div -8;

     if r < 0 then r := 0 else if r > 255 then r := 255;
     if g < 0 then g := 0 else if g > 255 then g := 255;
     if b < 0 then b := 0 else if b > 255 then b := 255;

     pt1 := pRGB24(ny2 + x2);
     pt1.R := r;
     pt1.G := g;
     pt1.B := b;
   end;
   inc(ny1, iDst);
   inc(ny2, iDst);
   inc(ny3, iDst);
 end;
end;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.197 c
15-1198132117
I
2007-12-20 09:28
2008.01.27
наиболее функиональный выход в irc через jabber клиент


2-1198820783
d@nger
2007-12-28 08:46
2008.01.27
Как программно засунуть в свой exe файл другой файл?


2-1199296893
Степан
2008-01-02 21:01
2008.01.27
Изменение системного времени


15-1198165729
Nucer
2007-12-20 18:48
2008.01.27
Бесплатная версия ZipTV


2-1198242394
Kubik
2007-12-21 16:06
2008.01.27
Передача файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский