繁体   English   中英

将图像中的白色部分转换为透明部分以模拟打印

[英]Convert white parts in image to transparent to simulate printing

我目前正在使用PHP和Javascript开发一个AJAX应用程序,该程序允许人们上传将打印在铝箔上的图像。 由于我将使用标准的CMYK打印机,因此它不会打印任何白色部分,而只是将这些斑点留为空白-通常在白纸上没有什么区别,但在这里确实如此,因为我正在打印在箔上。 当您认为一个灰色的点将变为半透明的黑色时,情况将变得更加复杂,而我什至没有谈论颜色。

但是我想创建一个带有Alpha通道的PNG文件,该通道将模拟打印过程,因此,我可以预览一下在不同背景下握住的箔纸的外观。

现在,我确实了解减色和加色颜色模型的基本理论,以及RGBA和CMYK的基本理论,但是再一次,这只是基础知识,在这里我有点不知所措。 我想从理论上讲,您可以将每个像素转换为CMYK,并将每个通道解释为从透明到彩色的刻度,而不是从白色到彩色的刻度,但是如何将其转换回RGBA?

当然,最好的办法是ImageMagick是否提供这样的功能...,还是我必须手动遍历像素? 如果是后者,我将如何进行计算?

我不知道这是否曾经是一个问题。 我在Stackoverflow或Google上都找不到任何东西,但也许我只是错过了正确的关键字。 任何进一步的阅读,思考的食物或带有注释的超链接“我们对此进行了百万次讨论,白痴!” 将热烈欢迎。

谢谢

您基本上想要的是向已上传的图像添加Alpha通道并创建PNG文件。

Alpha通道应代表打印颜色的不透明度。 要生成它,您有几种选择:

  1. 取得图像的副本,将其转换为灰度,将其反转并用作Alpha通道。

  2. 创建一个alpha通道,计算源自原始图像的每个像素的alpha值,如下所示: alpha = 1.0-min(红色,绿色,蓝色) (使用255而不是1.0,具体取决于您使用的是整数还是浮点数)。

  3. 将原始图像转换为CMYK(使用颜色配置文件,而不是在整个互联网上发现的不良公式),并将其用作为原始RGB图像创建alpha通道的基础: alpha = max(青色,品红色,黄色,黑色)

  4. 提出一个更好的公式来计算每个像素的透明度,例如:alpha = min(0.2 *青色+ 0.5 *品红色+ 0.1 *黄色+ 0.7 *黑色,1.0)

最后一个只是每种颜色的相对不透明度的猜测。 您当然可以改善它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM