Форум: "Начинающим";
Текущий архив: 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]> выпендриваются
Угу, ненадо сюда ходить с такими «вопросами»… :)
← →
{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