I tried the pure pas version in freepascal, works nicely I'd add a comment that ImageData is a PPNGPixel for clarity, not that it mattered much.
I tried the pure pas version in freepascal, works nicely I'd add a comment that ImageData is a PPNGPixel for clarity, not that it mattered much.
my projects https://github.com/dpethes
I feintly remembered reading long time ago, that FPC PNG would have some non-free licence. But now that i tried to find information, i found nothing. All FPC graphics seem to be of same modifiedLGPL that all the other code. But is FPC implementation heavier than this? Maybe it's coming at the cost of supporting more formats, i don't know. I went through all PNG related source files i could find, and there were none licence differences.
I think that while the full blown libs might support more image types, something like BeroPNG is a far better choice in order to avoid library dependencies, you're going to to be able to load 9x% of the PNGs you find using it and you're defining your own content usually.
There might be some differences in speed but it's negligable, only the most chuggy old iphones are going to show much difference between some native arm lib or arm compiled bero.
When the moon hits your eye like a big pizza pie - that's an extinction level impact event.
Sorry, I know this is an old thread but I tried BeRoPNG to work with ptcgraph. This is my (simple) example:
But the result isn't correct (see the attached screenshot). I think the problem is that ptcgraph uses a 16 bit colour format with no alpha channel. Any ideas how this can work?Code:var f: file; fsize: longword; buffer: pbyte; ImageData: PPNGPixel; ImageWidth, ImageHeight:longint; gd,gm:smallint; BEGIN AssignFile(f, 'bluepointer.png'); Reset(f, 1); fsize := FileSize(f); buffer := getmem(fsize); blockread(f, buffer^, fsize); CloseFile(f); BeRoPNG.LoadPNG(buffer, fsize, ImageData, ImageWidth, ImageHeight, false); Gd:=D16bit; Gm:=m800x600; InitGraph(Gd, Gm, 'Test'); if GraphResult <> grOk then begin Writeln('Graphics error: ', GraphErrorMsg(ErrorCode)); Halt(1); end; putimage (10,10,imageData^,1); delay (2000); closegraph; freemem(buffer); freemem(ImageData); END.
beropngtest.jpg
Best regards,
Cybermonkey
Cybermonkey: I've run into this myself quite a few times. Try open the image in gimp or something and fiddle a bit with the compression options when you export. This usually fixes things for reasons I don't fully understand...
(Though reading your suspicion I guess it might be because GIMP adds an alpha channel during the export? )
I once tried to change the world. But they wouldn't give me the source code. Damned evil cunning.
Unfortunately it still doesn't work ...
Best regards,
Cybermonkey
Bookmarks