Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.05.2012, 01:41
7nik 7nik вне форума
Прохожий
 
Регистрация: 28.02.2012
Сообщения: 9
Версия Delphi: 7
Репутация: 10
По умолчанию Работа с библиотекой FreeImage

Скачал библиотеку FreeImage, из приложенного ImagePreview переделал процедуру чтения картинки с поддержкой призрачности:
Код HTML:
procedure TForm1.LoadImage( Name : string); var dib:PFIBITMAP; t:FREE_IMAGE_FORMAT; Ext:string; BM:TBitmap; x,y:integer; BP:PLONGWORD; DC:HDC; BPP:longword; begin if (not OpenDialog.Execute) then abort; Image32.Bitmap.Clear; Name:=OpenDialog.FileName; t:=FreeImage_GetFileType(PAnsiChar(Name), 16); if t=FIF_UNKNOWN then begin Ext:=UpperCase(ExtractFileExt(Name)); if (Ext='.TGA')or(Ext='.TARGA') then t:=FIF_TARGA else if Ext='.MNG' then t:=FIF_MNG else if Ext='.PCD' then t:=FIF_PCD else if Ext='.WBMP' then t:=FIF_WBMP else if Ext='.CUT' then t:=FIF_CUT else raise Exception.Create('Файл "'+Name+'" имеет неподдерживаемый формат.'); end; dib:=FreeImage_Load(t,PAnsiChar(name), 0); if Dib=nil then abort; BPP:=FreeImage_GetBPP(dib); if BPP=32 then begin Image32.Bitmap.SetSize(FreeImage_GetWidth(dib), FreeImage_GetHeight(dib)); BP:=PLONGWORD(FreeImage_GetBits(dib)); for y:=Image32.Bitmap.Height-1 downto 0 do for x:=0 to Image32.Bitmap.Width-1 do begin Image32.Bitmap.Pixel[x,y]:=BP^; inc(BP); end; end else begin BM:=TBitmap.Create; DC:=GetDC(Handle); BM.handle:=CreateDIBitmap(DC, FreeImage_GetInfoHeader(dib)^, CBM_INIT, PChar(FreeImage_GetBits(dib)), FreeImage_GetInfo(dib)^, DIB_RGB_COLORS); Image32.Bitmap.Assign(BM); Alpha32.Bitmap.Assign(BM); BM.Free; ReleaseDC(Handle, DC); end; if BPP=32 then Image32.Bitmap.DrawMode:=dmBlend else Image32.Bitmap.DrawMode := dmOpaque; FreeImage_Unload(dib); end;

с помощью MultiBitmap пробывал открывать tif - показывает только 1 слой - всю картинку, хотя фотошоп показывает 4 слоя.

Вопрос: можно ли её как-то уменьшить (но чтобы прозрачность осталась) и можно ли из tif и psd извлечь только один, конкретный, слой (также с поддержкой прозрачности)?

Последний раз редактировалось 7nik, 21.05.2012 в 01:49.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:13.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025