【发布时间】:2022-01-03 02:03:58
【问题描述】:
我想将像素数组转换为图像,以便我可以读取图像的每个像素,我已经将图像转换为像素,现在我想要做的是我有一张RGB圆圈,将图像转换为像素后我想再次绘制图像而不是整个画面,我想单独绘制红色圆圈,单独绘制绿色圆圈和单独绘制蓝色圆圈并将图像存储在一个文件中,如何完成了吗?
这是我用来将图像转换为数组像素的代码:
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.awt.image.PixelGrabber;
import java.io.File;
import java.io.IOException;
public class BMPtoArray {
public static int[] convertToPixels(Image img) {
int width = img.getWidth(null);
int height = img.getHeight(null);
int[] pixel = new int[width * height];
PixelGrabber pg = new PixelGrabber(img, 0, 0, width, height, pixel, 0, width);
try {
pg.grabPixels();
} catch (InterruptedException e) {
throw new IllegalStateException("Error: Interrupted Waiting for Pixels");
}
if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
throw new IllegalStateException("Error: Image Fetch Aborted");
}
return pixel;
}
public static void main(String[] args) throws IOException {
BufferedImage image = ImageIO.read(new File("C:\\Users\\Mhamd\\Desktop\\3rd year
first semester\\Analysis and Coding\\labs\\2.2Java\\src\\circleRGB.bmp"));
//System.out.println(convertToPixels(image));
}
}
这是图片:
所以这基本上就是我想要实现的目标
[![这就是我想要实现的][2]][2]
【问题讨论】:
-
您可能希望查看裁剪图像,而不是处理像素。 stackoverflow.com/questions/2386064/…
-
@computercarguy 谢谢,但我不想裁剪图像,我想保留旧图像的尺寸,而不是绘制所有圆圈,我想将每种颜色单独绘制为在上图中
-
我在想你想保持重叠的颜色交互,但如果不是这样,那为什么不简单地在自己的
BufferedImage中绘制圆圈并单独保存呢?即使图像是动态生成的,您也应该能够跟踪各个更改,然后在每个自己的图像中重新创建它们。或者为您从不显示的每个元素保留一个BufferedImages 数组。这会占用大量 RAM,但它类似于 Photoshop 和 Gimp 中的图层。