Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

Как пользоваться KOLPNG   Найти похожие ветки 

 
-=mixir=- ©   (2003-05-31 14:50) [0]

Хочу написать конвертор BMP>PNG,
юзаю KOLPNG не ничего не работает.

Вот код, подскажите где ошибка.

uses kolpng,kol;

{$R *.res}

var png:PPngObject;
   bmp:PBitmap;

begin
{creating}
png:=NewPngObject;
bmp:=NewBitmap(50,50);

{initializing}
bmp.PixelFormat:=pf16bit;
bmp.Canvas.Rectangle(0,0,49,49);
bmp.Canvas.TextOut(10,10,"PNG Sample");

{Assign}

png.CompressionLevel:=9;
png.AssignHandle(bmp.Handle,false,0); // Не пашет!
if png.Error<> ErrOK then Showmessage("Error");
png.SaveToFile("NewBmp.png"); // 44 байта размер файла NewBmp.png

png.Free;
bmp.Free;

end.


 
Кладов   (2003-05-31 15:17) [1]


> {initializing}
> bmp.PixelFormat:=pf16bit;
bmp.Canvas.Brush.Color := clYellow;> bmp.Canvas.Rectangle(0,0,49,49);
> bmp.Canvas.TextOut(10,10,"PNG Sample");

А что 44 байта, то png просто очень хорошо сжимает черный битмап :)


 
-=mixir=- ©   (2003-05-31 16:18) [2]

Я уже пробовал и так:

uses kolpng,kol;

{$R *.res}

var png:PPngObject;
  bmp:PBitmap;

begin
{creating}
png:=NewPngObject;
bmp:=NewBitmap(50,50);

bmp.loadfromfile("ScrinShot.bmp");  // 2,5  мега весить Bmp
png.CompressionLevel:=9;
png.AssignHandle(bmp.Handle,false,0);

if png.Error<> ErrOK then Showmessage("Error");
png.SaveToFile("NewBmp.png");
png.Free;
bmp.Free;
end.


и всеравно не пашет, и даже размер не изменился :(


 
Кладов   (2003-05-31 17:31) [3]

осталось во втором примере сразу за bmp.LoadFromFile сделать bmp.SaveToFile( "loaded.bmp" ); и убедиться, что битмап не грузится. Или имя не то, или путь надо точный указывать. Я всегда пишу GetStartDir + имя, помогает.


 
Кладов   (2003-05-31 19:44) [4]

а кстати, какой формат у того мегабайтного битмапа, не 256 цветов случаем?

Что будет, если bmp.loadfromfile добавить bmp.PixelFormat := pf32bit; ?

Кажется, TPNGObject не хочет корректно сохранять картинки с палитрой, точнее сохраняет, но только сам потом и может прочитать - другие программы такой порядок чунков не приемлют. Сейчас я ему поправочку сделаю на этот счет.


 
-=mixir=- ©   (2003-06-01 11:05) [5]

формат у него 24 бита.

>осталось во втором примере сразу за bmp.LoadFromFile сделать >bmp.SaveToFile( "loaded.bmp" ); и убедиться, что битмап не >грузится. Или имя не то, или путь надо точный указывать. Я >всегда пишу GetStartDir + имя, помогает

Не ну ето не серьезно, мне кажется все дело в KOLPNG,
то что я скачав качав KOLZLIB и KOLPNG при компиляции обнаржил,
что некоторые inflate  функции не достыпны в немодуля.




 
Кладов   (2003-06-01 13:15) [6]


> некоторые inflate  функции не достыпны в немодуля.

и что, примеры выше при этом не компилировались? я пытаюсь выяснить, что не так в дистрибутиве, и в каком. У меня компилируется без проблем. Может, вы давно скачали KOLPng/KOLZLib, и с тех пор вышло обновление?


 
-=mixir=- ©   (2003-06-02 20:54) [7]

Не могли бы вы послать мне на мыло (mixShadow@xaker.ru)
свежие KOLZLIB и KOLPNG желательно с примером ?
Заранее благодарен...


 
Кладов   (2003-06-02 21:57) [8]

последние лежат на сайте. PNG я обновил вчера (или позавчера), ZLib от какого-то сентября, но у меня точно такой же, и никаких проблем с компиляцией.


 
Walkboy   (2004-01-09 15:27) [9]

Хочу вернуться к теме KolPNG.
Я столкнулся с такой же проблемой, что и -=mixir=- полгода назад.

1. По поводу того, что не так в дистрибутивах:
Да, Владимир, у меня KolPNG в том виде, в котором она есть, компилироваться отказалась. Она использует набор inflate-/deflate-функций библиотеки KolZLib. В KolZLib мне пришлось повторить описание этих функций в секции Interface: (блоки функций, озаглавленные:
// deflate compresses data
// inflate decompresses data).
В эту же секцию из секции implementation я перенес const.
После этих манипуляций KolPNG откомпилировалась (ранее выдавала ошибки: Undeclared identifier).

2. Очень странно ведет себя процедура AssignHandle.
Вот текст программы, которая прекрасно отрабатывает:
program Sample;
{$APPTYPE CONSOLE}
uses KOL, KOLPng;

var Png:PPngObject;
   Bmp:PBitmap;

begin
    Png := NewPngObject;
    Png.LoadFromFile("t:\asd.png");
    Png.SaveToFile("t:\asd2.png");
    Png.Free;
end.

В результате создается новый PNG-файл. Никаких нареканий на работу. PNG-файлы, сделанные Adobe ImageReady сжимает процентов на 10-25.
Проблемы начинаются, когда необходимо сжать BMP-файл. Вот тело программы:
    Bmp := NewBitmap( 0, 0 );
    Bmp.LoadFromFile("t:\asd.bmp");
    Png := NewPngObject;
    Png.AssignHandle( Bmp.Handle, FALSE, 0 );
    Png.SaveToFile("t:\asd2.png");
    Png.Free; Bmp.Free;

В результате выполнения этого кода создается PNG-файл размером 44 байта.
В процедуре AssignHandle, насколько я понимаю, некорректно отрабатывает BuildHeader. При трассировке именно эта процедура показывет странные результаты (например, свойства Header после присвоения им новых значений не изменяются). Проверял на PNG- и BMP-файлах разрешения 800х600, глубина цвета: 24 бита.
Использую:
OS:   WinXP SP1 Pro Eng;
App:  Delphi 5;
Unit: KOL 1.87; KolPNG v2.1.174; KolZLib v3.179;

3. Иполняемый Файл GrabScreen работает без проблем, а скомпилированый из исходников создает 44-х байтные файлы. Пытался читать про исходники PNG - там что-то говорится про использование MMX. У меня процессор АМД Аthlon XP. Может в этом причина?


 
Walkboy   (2004-01-09 16:24) [10]

Ошибки Undeclared identifier..., которые были до модификации KolZLib, полностью описал azsd сегодня вот в этой теме: bugs report: KOLPNG http://delphimaster.net/view/11-1073629236/
Там же я более полно изложил свой вариант исправления (модификации) библиотеки KolZLib.



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.033 c
14-1084111388
Tester
2004-05-09 18:03
2004.05.30
DifSymbols


9-1075019291
ZedeS
2004-01-25 11:28
2004.05.30
Игра Удав, движение


4-1082289411
Torin
2004-04-18 15:56
2004.05.30
Drag&amp;Drop


7-1082529809
ZDDR
2004-04-21 10:43
2004.05.30
иконка екзехи


14-1084284336
Gero
2004-05-11 18:05
2004.05.30
Меню





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский