首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当显示时,png数据是否被浏览器更改?

当显示时,png数据是否被浏览器更改?
EN

Stack Overflow用户
提问于 2015-10-25 10:45:42
回答 1查看 224关注 0票数 0

我有一个具有以下rgba的2像素PNG图像:

代码语言:javascript
运行
复制
image.setAt(0, 0, { red:255, green:10, blue:10, alpha:100 });
image.setAt(1, 0, { red:255, green:255, blue:55, alpha:255 });
image.setAt(0, 1, { red:90, green:10, blue:65, alpha:250 });
image.setAt(1, 1, { red:60, green:255, blue:0, alpha:14 });

(使用节点的pngjs-图像模块)

当浏览器(firefox)加载映像并复制到画布以测试rgba数据时,将返回以下内容:

代码语言:javascript
运行
复制
255 7 7 100 
255 255 55 255 
89 9 64 250 
54 255 0 14 

似乎只有阿尔法通道值被保留,而像素颜色被任意改变。

到底怎么回事?

(在Linux上使用Firefox 41 )

编辑

pngtoy玩具 nodejs模块的介绍中,我发现了以下内容:

在客户端使用JavaScript实现PNG文件解析器/读取器/译码器的低级实现。 为什么浏览器已经支持PNG了? 浏览器将简单地加载并将任何PNG类型转换为RGBA位图。它还将对图像应用ICC和伽马校正,从而产生与原始位图不同的值。

然而,我认为PNG本身应该有ICC和Gamma校正块,以便浏览器应用它们。浏览器是否对任何png文件进行这样的图像操作,即使文件中没有ICC/gamma块?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-25 13:34:50

Firefox将带有alpha的图像转换为前置的alpha,供内部使用。如果您的工作流程正在从Firefox的内部图像缓冲区恢复图像,则在逆转预多重alpha时,将失去精确性。在极端情况下,α等于零的像素将作为透明黑色返回,而不考虑原始PNG中的底层颜色。这种效果并不取决于颜色管理块是否存在。

请注意,当您单击PNG图像并“另存为.”时,不会发生这种情况;在本例中,返回原始PNG。

当出现颜色管理块( gfs.color_management.mode、sRGB、gAMA和/或cHRM)时,火狐还可以修改内部图像(取决于在“about:config”中的设置),但这个问题似乎并非如此。再说一遍,“除非.”将返回原始像素和颜色管理块不变。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33328780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档