** pasha |
Отправлено: 05.07.2005, 11:59 |
|
Не зарегистрирован
|
Очень мало приходилось работать с графикой.
А теперь встала задача:
есть графические файлы формата .png (родной для Linux) нужно их:
1. преобразовать из .png в любой формат — .bmp .gif .jpg
2. заменить все точки черного цвета на белый.
( там фон — черный, а нужно печатать на принтере -
расход тонера будет — то есть фон сделаю белым )
Что касается задания 2 — нашел функцию
function ChangeBitmapColor(Bitmap: TBitmap; Color, NewColor: TColor): TBitmap; которая это должна делать или самому вручную тоже
вроде не особо сложно.
По преобразованию в другой формат — что-то я не нашел в ВСВ 6
компонента или класса, который работает-понимает .png
Как преобразовать .png в .bmp ???
|
|
Sl@Sh |
Отправлено: 06.07.2005, 02:45 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
А вы в Билдере и не найдёте. У меня есть парочка модулей для работы с PNG. Один я использовал, а второй нет. Сперва выложу первый.
Скажу что он достаточно много может (начиная от изменения качества и до прорисовки альфа-каналов). Однако работает относительно медленно, хотя это зависит от постановки вашей задачи.
№1 :
|
|
Sl@Sh |
Отправлено: 06.07.2005, 02:56 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
№2 :
|
|
Valdemar |
Отправлено: 06.07.2005, 07:07 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
На сайте http://www.xnview.com есть библиотека GFL SDK для работы с графическими файлами разных форматов. Думаю, что вам она подойдет. |
|
olegenty |
Отправлено: 06.07.2005, 07:08 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
а вообще — прямо на этом сайте имеет место Image Lib
|
|
Admin |
Отправлено: 06.07.2005, 15:41 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Нашел библиотеку — бесплатная, попробовал — работает.
Всем — кому надо — собственно сама библиотека -
http://pngdelphi.sourceforge.net/
или она-же в прикрепленном файле ( версия 1.5 )
(если вдруг ссылка перестанет работать).
Скачиваете ее, распаковываете,
добавляете в Ваш проект файл pngimage.pas и компилите его,
генерятся нужные .hpp файлы:
QUOTE |
Add pngimage.pas to your project and compile your program, the compiler creates a pngimage.hpp add this line:
#include "pngimage.hpp"
to the unit that contains the OpenPictureDialog.
that should do the trick !
|
Есть файл справки, как ею пользоваться, собственно все очень просто
(как и обычные .bmp и пр.)
CODE |
Converting from Windows bitmap file to PNG file
This method loads a bitmap and saves it using png format
procedure BitmapFileToPNG(const Source, Dest: String);
var
Bitmap: TBitmap;
PNG: TPNGObject;
begin
Bitmap := TBitmap.Create;
PNG := TPNGObject.Create;
{In case something goes wrong, free booth Bitmap and PNG}
try
Bitmap.LoadFromFile(Source);
PNG.Assign(Bitmap); //Convert data into png
PNG.SaveToFile(Dest);
finally
Bitmap.Free;
PNG.Free;
end
end;
|
CODE |
Converting from PNG file to Windows bitmap file
The above inverse. Loads a png and saves into a bitmap
procedure PNGFileToBitmap(const Source, Dest: String);
var
Bitmap: TBitmap;
PNG: TPNGObject;
begin
PNG := TPNGObject.Create;
Bitmap := TBitmap.Create;
{In case something goes wrong, free booth PNG and Bitmap}
try
PNG.LoadFromFile(Source);
Bitmap.Assign(PNG); //Convert data into bitmap
Bitmap.SaveToFile(Dest);
finally
PNG.Free;
Bitmap.Free;
end
end;
|
это на дельфи, ну в С++Билдере понятно примерно так:
CODE |
#include "pngimage.hpp"
if( OpenPictureDialog1->Execute() ){
Graphics::TBitmap* bmpImage = new Graphics::TBitmap();
AnsiString ImagePngFile = OpenPictureDialog1->FileName;
TPNGObject* pngImage = new TPNGObject;
pngImage->LoadFromFile(ImagePngFile);
bmpImage->Assign(pngImage);
delete pngImage;
AnsiString ImageBmpFile = ChangeFileExt( ImagePngFile, ".bmp" );
bmpImage->SaveToFile(ImageBmpFile);
delete bmpImage;
}
|
и так далее, в help-e там все это есть.
|
|
Sl@Sh |
Отправлено: 07.07.2005, 04:24 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
to Admin Я немного выше уже выложил эту библиотеку
|
|