java - 难以在 Java 中将数组转换为缓冲图像

标签 java bufferedimage

我想在 Java 中逐个像素地处理图像,因此我设置了一个包含我的颜色的一维列表。然后我将其转换为缓冲图像,但像素都是错误的。

因此,我已将其简化为以下绝对基础知识。在我看来,这应该给出一个正方形,左半边是蓝色,右半边是黑色。相反,它给出了蓝色和黑色的斜条纹。请问有什么想法吗?

   private void create(){
        int w = 100;
        int h = 100;
        int blue;
        int[] pix = new int[w * h];
        int index = 0;
        for (int y = 0; y < h; y++) {
            for (int x = 0; x < w; x++) {
              if (x<50) {blue = 255;} 
              else blue=0;
              pix[index++] =  blue;
            }
        }
       image = new BufferedImage(100,100, BufferedImage.TYPE_INT_RGB);
       image.setRGB(0, 0, 100, 100, pix, 0, 1);

最佳答案

你弄错了步幅变量。这一行:

image.setRGB(0, 0, 100, 100, pix, 0, 1);

需要改为:

image.setRGB(0, 0, 100, 100, pix, 0, 100);

有一些小的变化可以提高可读性,但您可以处理这些变化。上述更改将解决您提出的问题。

关于java - 难以在 Java 中将数组转换为缓冲图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34048741/

相关文章:

android - Java BufferedImage/Android 位图

java - 如何将 JSON 数组从 AngularJS Controller 传递到 Spring Controller ?

java - JBoss 7 : how to dynamically load jars

java - 在没有 root 权限的情况下在 JInput 中使用键盘

java - 每次渲染前未清除 BufferedImage

Java : How to resize buffered image in pixels?

java - 为什么我的去除这种颜色的方法不起作用?

Java - 有什么方法可以制作形状图像吗?

java - Hibernate 参数值 [568903] 与预期类型不匹配 [java.lang.Long]

java - 编写自定义 Chef Recipe 来安装和运行自制应用程序