问题标签 [png-8]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
617 浏览

java - java如何去除png-24图像的alpha通道?

我有一个 png-24 图像,如何删除它的 alpha 通道?或者如何将其转换为 png-8 格式?这是我的代码,但它无法工作。

结果图像为黑色。

或者如何通过java将png-24图像转换为jpg?</p>

0 投票
2 回答
638 浏览

objective-c - 创建调色板 CGImageRef

我正在尝试使用 CoreGraphics 创建一个调色板(索引)PNG。

我发现最好的是我可以使用:

CGColorSpaceRef colorSpace = CGColorSpaceCreateIndexed(CGImageGetColorSpace(maskedImage), 255, <#const unsigned char *colorTable#>);

然后:

CGImageRef palettedImage = CGImageCreateCopyWithColorSpace(maskedImage, colorSpace)

但是我不知道该放什么作为colorTable。我想利用一些预制(快速)量化算法 - 例如调用时已经内置到 ImageIO 中的算法CGImageDestinationCreateWithURL(url, kUTTypeGIF , 1, NULL);

如何为 PNG 创建调色板?

0 投票
1 回答
1803 浏览

ios - Imagemagick降低PNG深度

我有大量来自从事一个项目的艺术家提供的图像。这些图像有不同的规格,但都是PNG。有些是 8 位索引(调色板),有些是带有 alpha 32 位和 64 位 PNG 的真彩色。

现在,我正在尝试使用 imagemagick 将所有这些图像推送到单一的连贯格式,但我面临着一个痛苦的问题。我注意到从带有 alpha(16 位通道深度)的真彩色转换而来的图像非常有用。但是,每通道 8 位图像,或者可能更低/更高的图像会有些损坏,并且我们拥有的渲染引擎(在 iOS 上)将无法正确显示图像。

有没有办法简单地将所有图像可靠地转换为具有 alpha PNG 格式(RGBA8888)的每通道 8 位真彩色?

(注意:我在 wikipedia 链接中读到真彩色和 alpha 每个通道至少 32 位,我需要通过修剪来减少深度以减小文件大小。渲染引擎也会处理这个问题。)

我尝试了以下命令:

这是运行最后一个命令的两个图像,第二个不在引擎上运行:

和...

这是它被破坏之前的样子:

0 投票
1 回答
997 浏览

php - PHP GD only: PNG24+Alpha => PNG8 does not save Alpha

Please do not post code which you have not actually tested! I have spent some time looking for this answer. There are several similar posts here on StackOverflow, but nothing I have found can produce this seemingly simple result.

pngquant is very nice for certain uses, but in this case, I have a specific use which I am trying to fill, which means using only the generic PHP with GD install.

Now the relevant code in its entirety! This simple code, produces a high color PNG image, with a translucent alpha channel. Works great, simple and effective!

The following, nearly identical code, produces an 8bit PNG image file, unfortunately, the Alpha channel data is lost.

Knowing that an 8bit PNG with alpha channel is demonstrably possible, can PHP GD do it, or not? It appears PHP GD is incapable, a bit of a turkey, but some of you are far more advanced than I am and may know the definitive answer one way or the other...

thanks in advance for any help.

0 投票
0 回答
1320 浏览

c++ - 在 Windows 中使用 C++ 编写具有透明颜色的 8 位 png

我有一些代码可以从侧面扫描声纳数据生成假彩色合成图像,我想将这些图像作为叠加层加载到 Google 地球中。我需要节省空间,所以 8 位 PNG 文件似乎是要走的路。我可以为背景使用 1 个颜色表条目,为我的假颜色表使用 255 个颜色表条目。

我看到以前的答案推荐了 ATL 库中的 CImage 类。所以我在这里查找 MSDN 文档(http://msdn.microsoft.com/en-us/library/5eb252d0(v=vs.100).aspx

它看起来很简单,所以我编写了这样的代码:

一切都或多或少符合预期,但颜色 255 只是另一种颜色。它根本不透明。

我知道这不是 GoogleEarth 的问题,因为我可以将文件加载到 Paint Shop Pro 并手动设置背景清除,然后一切正常。

我尝试将 RGBQUAD 表中的 .rgbReserved 字节设置为全零、255s 和斜坡,认为它可能被解释为 Alpha 值,但这没有效果。

我还尝试逐步完成 CImage::Save() 的实现,我确定它使用 Gdiplus::Bitmap::Save() 来使用“内置 PNG 编码器”进行写入。我想也许有些编码器参数设置不正确,但是这个 MSDN 页面表明 PNG 编码器的参数为零。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms533846(v=vs.85).aspx

所以,嗯,我想我的问题是“帮助!” :-)

更具体地说,有谁知道是否有任何 MSDN 本机功能可以让我生成 8 位 PNG,其口味我可以定义,并且至少有一种透明颜色?一个简单的修复会很棒,但我已经对 CImage 感到厌烦了,因为我愿意放弃它并尝试其他方法。

或者,有谁知道是否有可用于修复损坏的背景颜色的命令行实用程序?

谢谢!

0 投票
1 回答
796 浏览

java - 使用 ImageIO 处理奇怪的 png-8

我正在开发一个用于 Android 的工具,该工具将 png 作为输入,将其重新缩放为多个密度并将它们保存在一个目录中。(可以在这里找到的项目:https ://code.google.com/p/9patch-resizer/

为了打开图像,我使用 ImageIO 的函数 readImage ( http://docs.oracle.com/javase/6/docs/api/javax/imageio/ImageIO.html#read(java.io.File) )

但是我在处理一些 PNG-8 文件时遇到了一些问题,由于ImageOptim ,我将其缩小到最小尺寸

问题是,如果我用 ImageIO 打开这个图像,它会丢弃透明度信息,这很烦人。(意思是,当我重新缩放它并稍后保存时,透明度被丢弃)

这是我正在谈论的图像:背景以及重新缩放的输出:重新调整背景

如果我使用 Toolkit 的 createImage 方法(http://docs.oracle.com/javase/6/docs/api/java/awt/Toolkit.html#createImage(java.lang.String))而不是 ImageIO 的方法来获取图像,它工作正常,但我没有得到颜色模型等信息......

0 投票
6 回答
145255 浏览

html - png8 和 png24 有什么区别

我想知道 png 文件的用途。png 图像有两种格式;一个是png8,另一个是png24

我想知道,如果我在我的html页面中使用任何一种类型,会不会有任何错误?还是这只是质量问题?

0 投票
0 回答
32 浏览

html - 如何判断您下载的文件是 PNG-8、PNG-24 还是 PNG-32?

我正在尝试从网上下载图片,并将其保存为 png 文件 (image.png)。如何判断图像是 PNG-8、PNG-24 还是 PNG-32 文件(是否有默认值?)以及是否可以将文件类型更改为其中一种?顺便说一句,我正在使用 Windows 10 计算机。

0 投票
0 回答
399 浏览

php - 使用 Floyd-Steinberg 2 像 PHP 中的 GIMP 一样抖动将 PNG 保存为 PNG-8

在 GIMP 中,我可以使用以下属性为 Web 保存图像:

在此处输入图像描述

  • PNG-8
  • 256色调色板
  • 抖动:Floyd-Steinberg / Floyd-Steinberg 2 / 定位

使用这些选项,我可以将图像文件的大小减少多达 70%,而不会出现明显的质量损失。

如何使用 PHP 获得相同的结果?

生成的图像必须保持透明度。

我对图像压缩、编码、调色板等几乎一无所知。

编辑:我发布了一个带有 PHP 脚本的新问题,所以我会关闭这个问题,或者我会回答它。

带有透明PNG的imagetruecolortopalette的PHP错误结果

0 投票
1 回答
101 浏览

compression - 使用 png8 而不是 png24 作为 RGB 高度图

我有一个 1 波段 DEM geotiff,以及一个转换高度 -> RGB 和 RGB -> 高度的公式(如下所示:https ://docs.mapbox.com/help/troubleshooting/access-elevation-data )。

使用公式(和 GDAL/Python),我将我的 geotiff 转换为 3 个波段(R、G 和 B)geotiff,每个波段的值都在 0-255 范围内。

使用 mapnik / mod_tile,然后我将我的 geotiff 作为 PNG 瓷砖提供给 Web 客户端。如果我将 mod_tile 设置为 24 位或 32 位 PNG,一切都很好。但是,如果我将它们作为 8 位 PNG 提供(以减小它们的大小),那么解码的值就会有点偏离(在查看图像时我看不到差异,但 RGB 值并不完全相同,因此弄乱了我解码的高度)。

我是否期望能够使用 8 位 PNG 而不是 24/32 来做我想做的事情(检索确切的 RGB 值),或者我对 8 位 PNG 不了解(如果是这样,我将不得不深入 mod_tile 代码,我猜当我们询问 8 位时,它会生成 24 或 32 然后压缩)?