Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

JPEG + разбиение рисунка [D7, WinXP]


Ozone ©   (2004-05-11 13:05:00) 

Есть JPEG-картинка размера 704х258. Мне необходимо разбить ее на две размерами 352x258 и "засунуть" в разные Image.

Подскажите это можно реализовать как можно быстрее?


Mihey   (2004-05-11 15:02:00) [1]

2 Ozone:

Алгоритмов более быстрыз думаю не придумать, а реализацию - вполне можно. Только у тебя ошибочка есть:

Image1.Canvas.CopyRect(Rect(0,0,352,258),bmp.Canvas,Rect(0,0,352,258));

====>

Image1.Picture.Bitmap.Canvas.CopyRect(Rect(0,0,352,258),bmp.Canvas,Rect(0,0,352,258));

Иначе не сохранить будет (т.е. ты не засунул в TImage). Естесссно, TImage.Picture надо бы ещё и создать,и размеры выставить. А копировнаие можно через BitBlt:

BitBlt(Image1.Picture.Bitmap.Canvas.Handle, 0, 0, 352, 258,
 bmp.Canvas.Handle, 0, 0, SrcCopy);
BitBlt(Image2.Picture.Bitmap.Canvas.Handle, 0, 0, 352, 258,
 bmp.Canvas.Handle, 352, 0, SrcCopy);


Ozone   (2004-05-11 13:29:00) [2]

Сделал так

var
  jp: TJPEGImage;
  bmp: TBitmap;
begin
     bmp := TBitMap.Create;
     jp := TJPEGImage.Create;

     jp.LoadFromFile('...');
     bmp.Assign(jp);

     Image1.Canvas.CopyRect(Rect(0,0,352,258),bmp.Canvas,Rect(0,0,352,258));
     Image2.Canvas.CopyRect(Rect(0,0,352,258),bmp.Canvas,Rect(352,0,704,258));

     bmp.Free;
     jp.Free;
end;


Есть более быстрые алгоритмы?


Наверх

Титульная страница Поиск, карта сайта Написать письмо