java 像素转rgb,如何在Java中将getRGB(x,y)整数像素转换为Color(r,g,b,a)?...

I have the integer pixel I got from getRGB(x,y), but I don't have any clue about how to convert it to RGBA format. For example, -16726016 should be Color(0,200,0,255). Any tips?

解决方案

If I'm guessing right, what you get back is an unsigned integer of the form 0xAARRGGBB, so

int b = (argb)&0xFF;

int g = (argb>>8)&0xFF;

int r = (argb>>16)&0xFF;

int a = (argb>>24)&0xFF;

would extract the color components. However, a quick look at the docs says that you can just do

Color c = new Color(argb);

or

Color c = new Color(argb, true);

if you want the alpha component in the Color as well.

UPDATE

Red and Blue components are inverted in original answer, so the right answer will be:

int r = (argb>>16)&0xFF;

int g = (argb>>8)&0xFF;

int b = (argb>>0)&0xFF;

updated also in the first piece of code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Java中的ImageIO类来读取数字图像,并使用BufferedImage类来存储像素值。以下是一个示例代码,演示如何读取数字图像并转换R、G、B通道的像素值: ```java import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class ImageProcessor { public static void main(String[] args) { try { // 读取数字图像 File input = new File("image.jpg"); BufferedImage image = ImageIO.read(input); // 获取图像的宽度和高度 int width = image.getWidth(); int height = image.getHeight(); // 遍历图像的每个像素,并分别获取R、G、B通道的像素值 for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { // 获取像素点的RGB值 int rgb = image.getRGB(x, y); // 分离R、G、B通道的像素值 int red = (rgb >> 16) & 0xFF; int green = (rgb >> 8) & 0xFF; int blue = rgb & 0xFF; // 对R、G、B通道的像素值进行处理 // ... // 将处理后的R、G、B通道的像素值重新合并为一个像素点的RGB值 int newRGB = (red << 16) | (green << 8) | blue; // 将处理后的像素点的RGB值设置回图像 image.setRGB(x, y, newRGB); } } // 将处理后的图像保存到文件 File output = new File("output.jpg"); ImageIO.write(image, "jpg", output); } catch (Exception e) { System.out.println("Error: " + e.getMessage()); } } } ``` 在上面的代码中,我们首先使用ImageIO类读取数字图像,然后使用BufferedImage类存储像素值。我们遍历图像的每个像素,并使用getRGB()方法获取像素点的RGB值。然后,我们使用位运算和掩码操作分离出R、G、B通道的像素值,并对这些像素值进行处理。最后,我们将处理后的R、G、B通道的像素值重新合并为一个像素点的RGB值,并使用setRGB()方法将其设置回图像。最后,我们使用ImageIO类将处理后的图像保存到文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值