Delphi 7,将PNG加载到TImage中。

5

我想加载一个 .PNG 文件,使用了 OleGraphic 中的 LoadPic() 方法,这个方法可以处理其他格式的图片,但是对于 PNG 格式失败了。

目标是将图片复制到一个隐藏的位图中,然后对其进行遮罩处理,并复制到可见的工作图片画布中。如果 CopyRect 无法实现此操作,请随意提出其他建议。

但主要问题是:如何加载 PNG 格式的图片?我找到了很多网页(例如 TPNGImage),但所有的资源和链接都已经失效、消失或无法下载。


1
您能解释一下 Delphi 7.2 是什么吗?我对那个版本不熟悉。 - David Heffernan
8
Delphi 7.2是Delphi 7的未经授权的修改版本,通常可以在Torrent网站上找到。 - Bruce McGee
1
使用Gustavo Daud的PNG Delphi - Premature Optimization
@Bruce:我认为你只是报告了一个快速的谷歌搜索结果,因为你省略了D7.2的共享功能,以及为什么有人会扩展D7,或者为什么像我这样拥有D7许可证的人会在2003年想要这样一个扩展版本。你是否也找到了通常在种子站点上发现的其他Delphi版本? - Henrik Erlandsson
6个回答

11

Delphi 7 不支持 PNG 格式。但是有一些第三方组件可以添加这种支持。例如,在 Torry 网站 上可以找到一些。


Bruce的链接为您提供了几个选项,包括直接下载Delphi 7的链接,当我刚刚尝试时它们对我有效。 - Warren P
1
经过快速测试,Daud的PNGImage无法识别TPNGImage或TImage.pngimage.LoadFromFile。需要仔细检查。 - Henrik Erlandsson

6

最近的Delphi版本原生支持PNG格式,还有许多其他增强功能,建议您升级。


7
@David: 不要嘲笑Delphi 7的粉丝——这很危险。我从来不这样做 :) - kludg
@Serg 嗯,我想我只是天真了一些,我没有意识到我正在进入危险的领域…… - David Heffernan
1
@David Heffernan,嗯,没错,我的深入研究揭示了它最初是专有许可证。Daud先生的库分发背后有一个相当肮脏的故事,我应该更仔细地查看日期,对于错误信息表示抱歉。关于更多的问题 - OP的要求是PNG支持,如上所述,有理由保持D7。 - Premature Optimization
1
@user 我靠卖软件为生,所以当人们侵犯版权时,我感到很不爽。 - David Heffernan
3
@David Heffernan,“OP的要求是支持PNG格式,正如上面所说,有些理由让人们坚持使用D7”+1,某些人可能对原始回答进行了反对,因为它与该声明不符。事实上,Delphi粉丝们像我一样购买了许多原版,但是这些年来不得不遗憾地习惯了使用第三方扩展。如果Borland等公司能够继续升级以适应现实需求,我可能会在2003年至2009年之间购买许可证;) - Henrik Erlandsson
显示剩余7条评论

6

3

谷歌让你失望了。试着自己下载吧。看到了吗?这个项目已经死了^W从未存在过。 - Premature Optimization
Daud Sourceforge项目显示“不包含任何文件”。 - Henrik Erlandsson
这是一个失效的链接。无论你的回答或评论被阅读多少次,或者你重复粘贴多少次同样的失效链接都没有用。 - Henrik Erlandsson
1
1)http://delphi.pjh2.de/articles/graphic/png.php -> 链接失效 -> 您是正确的 2)http://delphi.pjh2.de/articles/graphic/png.php -> 链接正常 -> 我正确了... 简单明了... - azrael11

0

0

Soft Gems的GraphicEx已经迁移到https://github.com/mike-lischke/GraphicEx

关于此次迁移的说明可以在http://www.soft-gems.net/index.php/libs/43-graphicex-on-github找到。

我将GraphicEx添加到我的Delphi 6项目中,它可以直接使用,但是当我用Delphi 5测试时却不能正常工作。

不管怎样,它很好用,不仅实现了PNG图像,还实现了许多其他功能,这些功能可以从GraphicConfiguration.inc进行配置:

// Pick your preferred image formats here or leave them all enabled. By disabling
// certain formats which are not of interest you can save some memory.
{$define UseLZW}  //patent is out, yay!
{$define SGIGraphic}             // *.bw, *.rgb, *.rgba, *.sgi images are supported
{$define AutodeskGraphic}        // *.cel, *.pic images
{-$define NewTIFFGraphic}            // *.tif, *.tiff images
{$define OldTIFFGraphic}
{$define TargaGraphic}           // *.tga, *.vst, *.icb, *.vda, *.win images
{$define PCXGraphic}             // *.pcx, *.pcc, *.scr images
{$define PCDGraphic}             // *.pcd images
{$define PortableMapGraphic}     // *.ppm, *.pgm, *.pbm images
{$define CUTGraphic}             // *.cut (+ *.pal) images
{$define GIFGraphic}             // *.gif images
{$define RLAGraphic}             // *.rla, *.rpf images
{$define PhotoshopGraphic}       // *.psd, *.pdd images
{$define PaintshopProGraphic}    // *.psp images
{$define PortableNetworkGraphic} // *.png images
{$define EPSGraphic}             // *.eps images
{$define ArtsAndLettersGraphic}  // *.ged images

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接