java.awt.image.BufferedImage.getRBG不返回期望值

清零

我正在尝试使用具有七个参数BufferedImage.getRGB方法来读取像素区域并获取其颜色。听起来很简单,但是由于某种原因,它对我不起作用。这是一个简短的,自包含的,可编译的示例:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class BufferedImageTest extends JPanel {
BufferedImage image;

public static void main(String[] args) {
    BufferedImageTest mainClass = new BufferedImageTest();
    mainClass.run();
}

private void run() {
    initWindow();
    // Create image:
    image = new BufferedImage(5, 5, BufferedImage.TYPE_INT_RGB);
    int[] red = new int[25];
    for (int i = 0; i < 25; i++)
        red[i] = Color.RED.getRGB();
    image.setRGB(1, 0, 3, 5, red, 0, 0);

    // Read image:
    int[] rgbArray = new int[25];
    int w = image.getWidth();
    int h = image.getHeight();
    image.getRGB(0, 0, w, h, rgbArray, 0, 0);
    for (int i = 0; i < rgbArray.length; i++) {
        Color c = new Color(rgbArray[i]);
        System.out.print("(" + c.getRed() + "," + c.getGreen() + "," + c.getBlue() + ")");
        if (i % 5 == 4)
            System.out.println("");
    }
}

@Override
public void paint(Graphics g) {
    g.drawImage(image, 5, 5, null);
}

private void initWindow() {
    JFrame frame = new JFrame();
    frame.getContentPane().add(this);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(40, 60);
    frame.setVisible(true);
}
}

run()方法中,我首先创建一个非常简单的5 x 5像素图像,如下所示:

示例图片

很好 然后,我尝试读取该图像的像素,而这几乎是行不通的。它只能正确获取第一行像素,然后将其余的显示为黑色。打印循环的输出为:

(0,0,0)(255,0,0)(255,0,0)(255,0,0)(0,0,0)
(0,0,0)(0,0,0)(0,0,0)(0,0,0)(0,0,0)
(0,0,0)(0,0,0)(0,0,0)(0,0,0)(0,0,0)
(0,0,0)(0,0,0)(0,0,0)(0,0,0)(0,0,0)
(0,0,0)(0,0,0)(0,0,0)(0,0,0)(0,0,0)

当我希望它完全像第一行。我在这里想念什么?我尝试从头开始编写它,并在getRGB调用中使用“ scanline”和“ offset”参数,但似乎没有任何效果。我在Windows 7上运行Java 7,如果有什么不同的话。

Jk1

指定正确的scansize以获取所有行:

image.getRGB(0, 0, w, h, rgbArray, 0, w);

在这里查看:BufferedImage#setRGB()BufferedImage#getRGB()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将位图转换为java.awt.image.BufferedImage

来自分类Dev

错误:无法将sun.awt.image.ToolkitImage强制转换为java.awt.image.BufferedImage

来自分类Dev

Robolectric&Gradle:错误:无法访问java.awt.image.BufferedImage的BufferedImage类文件

来自分类Dev

java.awt.image.BufferedImage的二进制规则是什么

来自分类Dev

CodenameOne中的java.awt.image.BufferedImage的替代方案是什么

来自分类Dev

使用SwingFXUtils将BufferedImage(awt)转换为Image(JavaFx)

来自分类Dev

Android替代java.awt(BufferedImage和Raster)

来自分类Dev

使用java.awt.image.BufferedImage中创建BIFF8 BITMAP记录花费时间 - 有没有更好的方法吗?

来自分类Dev

Java的:是'sun.awt.image`包过时?

来自分类Dev

在SWT画布上绘制AWT BufferedImage

来自分类Dev

为什么在OSX上复制和粘贴图像现在在Java 8中返回sun.awt.image.MultiResolutionImage

来自分类Dev

Java从Bytearray创建BufferedImage

来自分类Dev

Java BufferedImage抛出NullPointerException

来自分类Dev

在Java中旋转BufferedImage而不更改大小

来自分类Dev

在Java中旋转BufferedImage而不更改大小

来自分类Dev

在调用java.awt.image.RenderedImage类的getWidth()方法时获取java.security.AccessControlException

来自分类Dev

如何为图像对象实现Java模板方法设计模式:BufferedImage,Image,ImageIcon

来自分类Dev

Java Swing窗口大小与AWT画布结果不匹配

来自分类Dev

Java AWT范围

来自分类Dev

Java AWT矩形交集

来自分类Dev

Java AWT矩形交集

来自分类Dev

Java AWT范围

来自分类Dev

Java AWT 字体乱码

来自分类Dev

可以使用Java.awt.Image android应用程序

来自分类Dev

任务ContinueWith不返回期望值

来自分类Dev

标量UDF不返回期望值

来自分类Dev

Java以浮点精度创建BufferedImage

来自分类Dev

更改Java中的bufferedImage像素

来自分类Dev

Java以浮点精度创建BufferedImage

Related 相关文章

  1. 1

    将位图转换为java.awt.image.BufferedImage

  2. 2

    错误:无法将sun.awt.image.ToolkitImage强制转换为java.awt.image.BufferedImage

  3. 3

    Robolectric&Gradle:错误:无法访问java.awt.image.BufferedImage的BufferedImage类文件

  4. 4

    java.awt.image.BufferedImage的二进制规则是什么

  5. 5

    CodenameOne中的java.awt.image.BufferedImage的替代方案是什么

  6. 6

    使用SwingFXUtils将BufferedImage(awt)转换为Image(JavaFx)

  7. 7

    Android替代java.awt(BufferedImage和Raster)

  8. 8

    使用java.awt.image.BufferedImage中创建BIFF8 BITMAP记录花费时间 - 有没有更好的方法吗?

  9. 9

    Java的:是'sun.awt.image`包过时?

  10. 10

    在SWT画布上绘制AWT BufferedImage

  11. 11

    为什么在OSX上复制和粘贴图像现在在Java 8中返回sun.awt.image.MultiResolutionImage

  12. 12

    Java从Bytearray创建BufferedImage

  13. 13

    Java BufferedImage抛出NullPointerException

  14. 14

    在Java中旋转BufferedImage而不更改大小

  15. 15

    在Java中旋转BufferedImage而不更改大小

  16. 16

    在调用java.awt.image.RenderedImage类的getWidth()方法时获取java.security.AccessControlException

  17. 17

    如何为图像对象实现Java模板方法设计模式:BufferedImage,Image,ImageIcon

  18. 18

    Java Swing窗口大小与AWT画布结果不匹配

  19. 19

    Java AWT范围

  20. 20

    Java AWT矩形交集

  21. 21

    Java AWT矩形交集

  22. 22

    Java AWT范围

  23. 23

    Java AWT 字体乱码

  24. 24

    可以使用Java.awt.Image android应用程序

  25. 25

    任务ContinueWith不返回期望值

  26. 26

    标量UDF不返回期望值

  27. 27

    Java以浮点精度创建BufferedImage

  28. 28

    更改Java中的bufferedImage像素

  29. 29

    Java以浮点精度创建BufferedImage

热门标签

归档