Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

bugs report: KOLPNG [Delphi, KOL]


azsd ©   (2004-01-09 09:20:00) 

kolzlib 3.179/2.151
kolpng 2.1.14
KOL 1.89
Delphi 6.0
added:
uses Windows, Messages, ShellAPI, KOL {$IFNDEF KOL_MCK}, mirror, Classes, Controls, mckControls, mckObjs, Graphics, mckCtrls {$ENDIF},kolpng;

Error Message displayed:

[Error] KOLPng.pas(1227): Undeclared identifier: 'InflateInit_'
[Error] KOLPng.pas(1247): Undeclared identifier: 'deflateInit_'
[Error] KOLPng.pas(1254): Undeclared identifier: 'DeflateEnd'
[Error] KOLPng.pas(1263): Undeclared identifier: 'InflateEnd'
[Error] KOLPng.pas(1370): Undeclared identifier: 'inflate'
[Error] KOLPng.pas(2175): Undeclared identifier: 'deflate'
[Error] KOLPng.pas(2175): Undeclared identifier: 'Z_NO_FLUSH'
[Error] KOLPng.pas(2202): Undeclared identifier: 'deflate'
[Error] KOLPng.pas(2202): Undeclared identifier: 'Z_FINISH'
[Error] KOLPng.pas(2202): Undeclared identifier: 'Z_STREAM_END'
[Warning] KOLPng.pas(2202): Comparing signed and unsigned types - widened both operands
[Fatal Error] MainUnt.pas(9): Could not compile used unit 'kolpng.pas'

these function in kolzib.pas is defined as extern from obj,
but kolpng can't use it.
zlib's demo works fine,but when add InflateInit_ in a the zlib demo,it popup same error message.


Walkboy   (2004-01-10 16:17:00) [1]

Раз уж эта тема про баги, то напишу сюда.
Предлагаемая библиотека KolPNG при каждом сохранении искажаетизображение. Искажение выражается в небольшомеле заметном осветлении изображения.
Вот текст программы, которая позволяет выявить это:

program Sample;
{$APPTYPE CONSOLE}
uses KOL, KOLPng;

var Png:PPngObject;
   i:integer;

procedure RemakePNG(Src,Dest:string;CompLvl:byte);
begin
     Png := NewPngObject;
     Png.LoadFromFile(Src);
     Png.CompressionLevel := CompLvl; {1}
     Png.SaveToFile(Dest);
     Png.Free;
end;

begin
    RemakePNG('t:\file1.png','t:\file2.png',0);
    for i:=1 to 25 do
     RemakePNG('t:\file2.png','t:\file2.png',0); {2}
end.


Для этой программы нужен исходный PNG-файл (t:\file1.png). После 25-ти кратной перезаписи отличия между исходным изображением и полученным из него уже становятся очевидны.
Специально, не поленился и скачал исходник - библиотеку PNGImageот Gustavo Daud ( http://pngdelphi.sourceforge.net). Последняя версия: 1.4.3.6.1от 4.03.2003г. Для нее аналогичные манипуляции с исходным PNG-файлом видимых искажений в изображение не внесли. Надо отметить отличную справку, поставляемую с этой библиотекой.
Пример получения PNG из BMP работает только при использовании Graphics. Размер exe-файла получается 170 KB.
Самому адаптировать PNGImage для KOL у меня не получилось - запутался в TBitmap и PBitmap'ах (опыта маловато). Было бы здорово видеть эту библиотеку под KOL в виде обновленной KolPNG. Жду Ваших комментариев, уважаемые разработчики.


azsd   (2004-01-09 16:57:00) [2]

yes follow these step it works.
thanks,
waiting for authority fix.


Walkboy   (2004-01-09 16:21:00) [3]

May I try to help.
Because of KolPNGuses some of deflate-/inflate-functions I have to modify source KolZlib.
Added block before line implementation:

// deflate compresses data
function deflateInit_(var strm: TZStreamRec; level: Integer; version: PChar;
 recsize: Integer): Integer;
function deflate(var strm: TZStreamRec; flush: Integer): Integer;
function deflateEnd(var strm: TZStreamRec): Integer;

// inflate decompresses data
function inflateInit_(var strm: TZStreamRec; Version: PChar; recsize: Integer): Integer;
function inflate(var strm: TZStreamRec; flush: Integer): Integer;
function inflateEnd(var strm: TZStreamRec): Integer;
function inflateReset(var strm: TZStreamRec): Integer;

And in adition, block constwich was situated after line implementationmoved to place before it.
And now KolPNG works, but not fully.
See about this in topic Как пользоваться KOLPNGlink.


Наверх

Титульная страница Поиск, карта сайта Написать письмо