![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
оптимизатор JPEG
Dy1 © (2007-05-06 12:32:00)Хочу написать оптимизатор JPEG. Как нарисовать сжатый JPEG не сохраняя его на винт? Посоветуйте плз.
KOLnMCK 2.56, D7
procedure TForm1.KOLForm1FormCreate(Sender: PObj);
begin
j := NewJpeg;
j.Bitmap := NewBitmap(0,0);
j.Bitmap.LoadFromFileEx('0.bmp'); // 24 бита
end;
procedure TForm1.KOLForm1Close(Sender: PObj; var Accept: Boolean);
begin
j.SaveToFile('1.jpg'); // сохраняется с нужным качеством
j.Free;
end;
procedure TForm1.KOLForm1Paint(Sender: PControl; DC: HDC);
begin
if not j.Empty then
j.Draw(Form.Canvas.Handle,0,40); // всегда 100%-ное качество :(
end;
procedure TForm1.Button1Click(Sender: PObj);
begin
j.CompressionQuality := str2int(EditBox1.Text);
// ничего не помогает
// j.Compress;
// j.JPEGNeeded;
Form.Invalidate;
end;
alex3 (2007-05-07 23:29:00) [1]Или держим два битмапа, в одном оригинал, а с другим производим операции.
После каждой операции, если надо, производим копирование с оригинала.
Выводя на форму один и другой можно визуально сравнить результат.
Vladimir Kladov (2007-05-07 21:27:00) [2]Вы читаете, что я написал? Сохраняйте в поток. Загружайте из потока. Битмап при вызове LoadFrom уничтожается.
Dy1 (2007-05-07 20:21:00) [3]
> Понятно, что 100%, ведь используется Bitmap
Мне надо рисовать на экране так же, как будет выглядеть сохранённая картинка
Vladimir Kladov (2007-05-06 15:23:00) [4]сохранять можно и в поток. Потом - загружать из этого же потока, переставив позицию в 0. Понятно, что 100%, ведь используется Bitmap, если он есть.