Delphi - 使用透明度和索引调整 PNG 大小

标签 delphi resize png delphi-xe2

我有许多具有透明度的 PNG 文件,这些 PNG 文件似乎已被索引。 我愿意:

  • 将 2 个相同的 PNG 并排放置,两者之间留有空格
  • 使用平滑调整大小过滤器(或 Mitchell、线性、样条或其他)调整结果大小
  • 保持透明度和原始颜色

你有一个例子吗?

最佳答案

此问题与其他问题相关 PNG resize问题但是...

据我所知,您无法调整索引图像的大小并保留原始调色板。调整图像大小将需要混合颜色,尤其是在缩小图像时。

PNGImage 组件(Delphi native 组件的基础)的原始作者有一个论坛,他和其他人在其中发布了有关如何使用 PNGImage 组件执行操作的代码片段。

在论坛被关闭之前,我获取了所有代码片段的副本,并将它们放在 CodeGear 代码中心网站上。

大多数(如果不是全部)都适用于原生 PNG 图像,并且确实维护 Alpha channel 。

以下是包中包含的示例的完整列表:

  • 平滑旋转 PNG 对象
  • 使用平滑算法调整 TPNGObject 的大小
  • 将一个 PNG 分割成多个较小的 PNG
  • 将图像另存为位图或 png。
  • 样本 block 后代
  • 读取所有 tEXt-Chunk 并将值写入 TStrings 对象
  • 显示一个消息框,其中包含从 PNG 文件中提取的信息
  • 从 PNG 图像中查找并剪切 block
  • 此方法将 png 转换为 jpeg 对象
  • 此方法将 png 转换为 bmp 对象
  • 将一个 PNG 覆盖在另一个 PNG 上(这会使图像半透明)
  • 垂直翻转 png 图像并保存回来
  • 在桌面上绘制 png 图像

这是链接:CodeCentral PNG Methods

关于Delphi - 使用透明度和索引调整 PNG 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23477885/

相关文章:

c - Delphi 和 C 中的 RC4?

delphi - 首次读取 TcpServer 后接收缓冲区数据丢失

delphi - 可以在一行中初始化某种类型的多个变量吗?

javascript - 调整容器div的高度?

delphi - 在 ADO 异步回调期间无法将对象添加到 GlobalInterfaceTable

jquery - 移动滚动触发 jQuery 调整大小事件 - (仅在使用移动设备时触发,在浏览器视口(viewport)中可以)

html - 如何使 div 调整大小以填充整个浏览器窗口?

c++ - CImg 没有正确显示透明的 png 图像?

jquery - IE7 和 "jaggies"围绕分层 PNG(使用 jQuery)

javascript - 是否有针对 IE6 的 JavaScript PNG 修复程序允许 CSS 背景定位?