![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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.