【发布时间】:2011-04-29 12:11:44
【问题描述】:
您将如何编写一个将 RGB 转换为 CMY 的简单 Java 程序?...或者您可以给我一些关于如何编写它的提示?
【问题讨论】:
-
CMYK 不是 CMY。它只是它的一个先进概念
-
有一个类似的问题,也许有用:stackoverflow.com/questions/59440192/…
标签: java
您将如何编写一个将 RGB 转换为 CMY 的简单 Java 程序?...或者您可以给我一些关于如何编写它的提示?
【问题讨论】:
标签: java
RGB 到/从 CMY
从RGB转换为CMY简单如下
C = 1 - R
M = 1 - G
Y = 1 - B
更多信息请参考以下内容
【讨论】:
会添加
CYAN - 1 = RED
MAGENTA - 1 = GREEN
YELLOW - 1 = BLUE
从 rgb 交易
RED - 1 = CYAN
GREEN - 1 = MAGENTA
BLUE - 1 = CYAN
【讨论】:
我也想转换一张指定图片,这是给定的。我知道我可以从 RGB 计算 CMY 值。我正在逐像素读取给定的图片(RGB 颜色空间中的内容),将其计算为 CMY,然后将其保存为 CMY 图片。
这是我的 Java 代码:
import java.awt.Color;
import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Aufgabe2c {
public static void main(String[] args) {
try {
BufferedImage image = ImageIO.read(new File("blumen.bmp"));
iterateThroughImageToGetPixel(image);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void iterateThroughImageToGetPixel(BufferedImage image) {
int width = image.getWidth();
int height = image.getHeight();
System.out.println("width, height: " + width + ", " + height);
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
System.out.println("x,y: " + j + ", " + i);
int pixel = image.getRGB(j, i);
getPixelARGB(pixel);
System.out.println("");
}
}
}
/*
* Quelle: https://alvinalexander.com/blog/post/java/getting-rgb-values-for-each-pixel-in-image-using-java-bufferedi
* http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_20_006.htm#mj4c12381d5bacf8fb6ee31448d26890bb
*/
public static void getPixelARGB(int pixel) {
int alpha = (pixel >> 24) & 0xff;
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;
convertRGBToCMY(red, green, blue);
System.out.println("argb: " + alpha + ", " + red + ", " + green + ", " + blue);
}
public static void convertRGBToCMY(int red, int green, int blue) {
int[] cmyArray = new int[3];
//cyan
cmyArray[0] = 255 - red;
//magenta
cmyArray[1] = 255 - green;
//yellow
cmyArray[3] = 255 - blue;
Color col = new Color(new ColorSpace(), components, alpha)
// BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
// ImageIO.write(image, "bmp", new File("blumen_cym.bmp") ); // Save as BMP
// System.out.println("argb: "+ red + ", " + green + ", " + blue);
}
}
【讨论】: