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

Вниз

Выполнить Stretch jpg файла   Найти похожие ветки 

 
nstur   (2005-07-12 16:14) [0]

У меня есть jpg файл, который необходито уменьшить до 160х120.
Загружаю в TImage, файл и пытаюсь выполнить:
StretchBlt(Image2.Canvas.Handle, 0, 0, 160, 120,
          Image1.Canvas.Handle, 0, 0, w, h, SRCCOPY);
работает только с bmp файлами, а мне нужен jpg.
Разбираясь обнаружил, что Image1.Picture.Bitmap{.Canvas.Handle} пуст.
Подскажите как можно выполнить Stretch изображения. Может библиотеки есть какието?


 
A22 ©   (2005-07-12 16:25) [1]

попробуй StretchDraw из VCL вместо StretchBlt из GDI


 
nstur   (2005-07-12 16:43) [2]

StretchDraw Canvas или есть еще что-то? Я думал, что этот метод только для вывода изображения. Ни как в голову не приходит, каким местом его приспособить.


 
nstur   (2005-07-12 16:45) [3]

Может я не пояснил. Полученное изображение я хочу сохранить в jpg файл.


 
A22 ©   (2005-07-12 18:22) [4]

нарисуй в канву битмапа 160х120, а потом
jpeg.Assign(bmp);
jpeg.SavetoFile();


 
nstur   (2005-07-13 09:04) [5]

A22 спасибо за инфу. Ниже приведен код, который позволяет выполнить Stretch загруженного в Image1 jpg файла. Но выходная картинки получается с искаженными цветами. С bmp, которые я загружал в Image1 все нормально.
Что можно/нужно сделать для получения нормального изображения.

var
 Scr, Dest: TBitmap;
 j: TJPEGImage;
begin
 Scr:= TBitmap.Create;
 Dest:= TBitmap.Create;
 j:= TJPEGImage.Create;
 try
   Scr.Assign(Image1.Picture.Graphic);
   Dest.Width:= 160; Dest.Height:= 120;
   Dest.PixelFormat:= Scr.PixelFormat;
   StretchBlt(Dest.Canvas.Handle, 0, 0, Dest.Width, Dest.Height,
              Scr.Canvas.Handle, 0, 0,  Scr.Width, Scr.Height, SRCCOPY);
   j.Assign(Dest);
   j.SaveToFile("c:\1.jpg");
 finally
   Scr.Free;
   Dest.Free;
   j.Free;
 end;
end;


 
MBo ©   (2005-07-13 09:09) [6]

перед StretchBlt сделай SetStretchBltMode
Лучше всего - с HALFTONE (но в Win9X не поддерживается)


 
nstur   (2005-07-13 09:17) [7]

Спасибо, все получилось. Ниже на всякий случай привожу код.

var
 w, h: integer;
 Scr, Dest: TBitmap;
 j: TJPEGImage;
begin
 Scr:= TBitmap.Create;
 Dest:= TBitmap.Create;
 j:= TJPEGImage.Create;
 try
   Scr.Assign(Image1.Picture.Graphic);
   Dest.Assign(Scr);
   Dest.Width:= 160; Dest.Height:= 120;
   SetStretchBltMode(Dest.Canvas.Handle, HALFTONE);
   StretchBlt(Dest.Canvas.Handle, 0, 0, Dest.Width, Dest.Height,
              Scr.Canvas.Handle, 0, 0,  Scr.Width, Scr.Height, SRCCOPY);
   j.Assign(Dest);
   j.SaveToFile("c:\1.jpg");
   Image2.Picture.Bitmap.Assign(Dest);//показать, что получилось
 finally
   Scr.Free;
   Dest.Free;
   j.Free;
 end;
end;



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

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

Наверх




Память: 0.46 MB
Время: 0.012 c
10-1109752033
Pietro
2005-03-02 11:27
2005.12.18
Работа с файлами


2-1133779561
KitsumVI
2005-12-05 13:46
2005.12.18
Какой программой можно просмотреть дерево классов


11-1110649395
Владимир Кладов
2005-03-12 20:43
2005.12.18
нужна необычная обработка исключений для collapse


14-1132667294
Opilki_Inside
2005-11-22 16:48
2005.12.18
Алгоритм получение уникального номера железа


3-1130503241
Брат
2005-10-28 16:40
2005.12.18
Передача параметра





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский