我正在尝试实现一种解决方案,用于计算RGB和CMYK之间的转换,反之亦然。这是我到目前为止的内容:
public static int[] rgbToCmyk(int red, int green, int blue)
{
int black = Math.min(Math.min(255 - red, 255 - green), 255 - blue);
if (black!=255) {
int cyan = (255-red-black)/(255-black);
int magenta = (255-green-black)/(255-black);
int yellow = (255-blue-black)/(255-black);
return new int[] {cyan,magenta,yellow,black};
} else {
int cyan = 255 - red;
int magenta = 255 - green;
int yellow = 255 - blue;
return new int[] {cyan,magenta,yellow,black};
}
}
public static int[] cmykToRgb(int cyan, int magenta, int yellow, int black)
{
if (black!=255) {
int R = ((255-cyan) * (255-black)) / 255;
int G = ((255-magenta) * (255-black)) / 255;
int B = ((255-yellow) * (255-black)) / 255;
return new int[] {R,G,B};
} else {
int R = 255 - cyan;
int G = 255 - magenta;
int B = 255 - yellow;
return new int[] {R,G,B};
}
}
正如Lea
Verou所说,您应该利用色彩空间信息,因为没有从RGB映射到CMYK的算法。Adobe有一些ICC颜色配置文件可供下载1,但是我不确定它们是如何获得许可的。
获得颜色配置文件后,将执行以下操作:
import java.awt.color.ColorSpace;
import java.awt.color.ICC_ColorSpace;
import java.awt.color.ICC_Profile;
import java.io.IOException;
import java.util.Arrays;
public class ColorConv {
final static String pathToCMYKProfile = "C:\\UncoatedFOGRA29.icc";
public static float[] rgbToCmyk(float... rgb) throws IOException {
if (rgb.length != 3) {
throw new IllegalArgumentException();
}
ColorSpace instance = new ICC_ColorSpace(ICC_Profile.getInstance(pathToCMYKProfile));
float[] fromRGB = instance.fromRGB(rgb);
return fromRGB;
}
public static float[] cmykToRgb(float... cmyk) throws IOException {
if (cmyk.length != 4) {
throw new IllegalArgumentException();
}
ColorSpace instance = new ICC_ColorSpace(ICC_Profile.getInstance(pathToCMYKProfile));
float[] fromRGB = instance.toRGB(cmyk);
return fromRGB;
}
public static void main(String... args) {
try {
float[] rgbToCmyk = rgbToCmyk(1.0f, 1.0f, 1.0f);
System.out.println(Arrays.toString(rgbToCmyk));
System.out.println(Arrays.toString(cmykToRgb(rgbToCmyk[0], rgbToCmyk[1], rgbToCmyk[2], rgbToCmyk[3])));
} catch (IOException e) {
e.printStackTrace();
}
}
}
我正在尝试使用Latex创建PDF文件。但是,Latex不处理TIFF或任何其他能够同时透明和CMYK的图像格式。我认为我可以使用的唯一解决方案是将PNG图像转换为PDF并将其嵌入到文件中。 我对imagemagick有点熟悉,但是,我不知道如何将PNG(可能在RGB/SRGB颜色空间中)转换为CMYK颜色空间中的PDF。 我如何进行这种转换,使颜色正确,透明度保持不变?
问题内容: 如果我有RGB小数,例如,我该怎么做才能将其转换为CMYK? 例如: 问题答案: 这是Javascript实现的Python端口。
问题内容: 我需要将图像从CMYK转换为RGB-不必再次返回,但是,嘿,如果可以的话… 随着ColdFusion 8的发布,我们获得了CFImage标签,但是它不支持这种转换。而且Image.cfc或Alagad的Image Component 也不会。 但是,在Java中应该可以实现。我们可以通过CF加以利用。例如,以下是创建Java线程以使进程休眠的方法: 我猜想可以使用类似的方法来利用Jav
问题内容: 我很难让ImageMagick 识别PDF为CMYK。 从本质上讲,让我们说我建这个文件,具有: 如果我随后尝试标识生成的文件,则无论我尝试了什么选项(至少根据源中的链接),我都将其获取为RGB -但是,其中的颜色将另存为CMYK。对于以上来源: 如果我也取消注释该 部分,则几乎会发生同样的情况。但是,如果文档中只有一种颜色(黑色),我看不到RGB值的直方图在哪里出现(尽管可以说所有这
前面几节里我们使用了小批量随机梯度下降的优化算法来训练模型。在实现中,我们只提供了模型的正向传播(forward propagation)的计算,即对输入计算模型输出,然后通过autograd模块来调用系统自动生成的backward函数计算梯度。基于反向传播(back-propagation)算法的自动求梯度极大简化了深度学习模型训练算法的实现。本节我们将使用数学和计算图(computationa
我目前正在编码一个colorpicker并尝试创建一个函数,它需要3个介于0和255(RGB)之间的整数。 如果你看上面链接的图像,你可以看到在中心有一个彩虹-渐变。上面的所有RGB值至少包含一个0和一个255的整数。另一个可以是0到255之间的任何值。然后在图像的左边有一个正方形,它包含这个“彩虹颜色”的所有“子颜色”的渐变。 函数应该取这个子颜色的RGB值(例如,R=112,G=158,B=7