Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2010, 23:26   #1
FelixKoT
Пользователь
 
Аватар для FelixKoT
 
Регистрация: 07.01.2010
Сообщений: 28
По умолчанию PNG с другим цветом прозрачности

Вот нужно мне сейчас загрузить в Image1 PNG изображение, что бы можно было работать с пикселями Image1 (Image1.Canvas.Pixels[X,Y]). Сейчас я использую такой код:
Код:
procedure PngtoBmp(FileS: string);
var
 png: TPNGObject;
 bmp: tbitmap;
begin
 png := TPNGObject.create;
 try
 png.loadfromfile(FileS);
 bmp := tbitmap.create;
 try
 bmp.assign(png);
 bmp.savetofile(FileS+'.bmp');
 finally
 bmp.free
 end;
 finally
 png.free
 end;
 exit;
end;

procedure TForm38.Button3Click(Sender: TObject);
var
 TmpBmp: TBitmap;
begin
  TmpBmp := TBitmap.Create;
  PngtoBmp('G:\tmp.png');
  TmpBmp.LoadFromFile(FileSkin+'.bmp');
  Image1.Picture.Assign(TmpBmp);
end;
но так все прозрачные пиксели заливаются чёрным цветом. Как можно заменить все прозрачные пиксели на какой-нибудь свой цвет, например $ff01ff?
FelixKoT вне форума Ответить с цитированием
Старый 31.10.2010, 23:41   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Проще скачать модуль TPNGImage и его использовать:
http://delphidevelop.ru/publ/12-1-0-174
mihali4 вне форума Ответить с цитированием
Старый 01.11.2010, 00:04   #3
FelixKoT
Пользователь
 
Аватар для FelixKoT
 
Регистрация: 07.01.2010
Сообщений: 28
По умолчанию

Если с помощью TPNGImage загрузить изображение с индексированным цветом (Indexed color), то альфа канал или не определится, или закрасит большую половину картинки прозрачными пикселями.
+ работать с Canvas уже не получается.

Новый вопрос: как с помощью дельфи переконвертировать PNG из Indexed color в RGB color? В поиске ничего подобного не нашёл..

Неужели нету ни одного способа конвертации png из 8 bit В 16?

Последний раз редактировалось mihali4; 02.11.2010 в 01:10.
FelixKoT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ресайз PNG без потери прозрачности RidDozZ Мультимедиа в Delphi 2 01.08.2012 13:40
PNG загружаются без прозрачности Crystallon Общие вопросы Delphi 2 13.09.2010 08:23
Часть фона одним цветом а другая часть другим (без таблиц). Lanselot HTML и CSS 4 25.04.2008 18:41
Про глюк прозрачности! Marsik Помощь студентам 15 08.11.2007 13:33