Форум по 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.
Ответить с цитированием
  #2  
Старый 21.05.2012, 01:50
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Не все используют эту библиотеку, а вот проверять файл по-расширению - недостаточно.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 21.05.2012, 02:04
7nik 7nik вне форума
Прохожий
 
Регистрация: 28.02.2012
Сообщения: 9
Версия Delphi: 7
Репутация: 10
По умолчанию

Мне надо из стандартно неподдерживаемых форматов - png, tif и желательно psd + прозрачность. А код сделал на основе готового.
Ответить с цитированием
  #4  
Старый 21.05.2012, 02:22
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от 7nik
Мне надо из стандартно неподдерживаемых форматов - png, tif и желательно psd + прозрачность. А код сделал на основе готового.
GDI+, поддерживает и PNG и TIF.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
7nik (23.05.2012)
  #5  
Старый 22.05.2012, 00:05
7nik 7nik вне форума
Прохожий
 
Регистрация: 28.02.2012
Сообщения: 9
Версия Delphi: 7
Репутация: 10
По умолчанию

Как и с помощью чего TIF (и хотелось бы PSD) можно разложить на слои?
Ответить с цитированием
  #6  
Старый 22.05.2012, 00:10
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Смотри здесь, но с PSD не работает.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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