作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我发布此线程是因为我在处理Java图片时遇到一些困难。我希望能够将图片转换为byte []数组,然后进行反向操作,因此可以更改每个像素的RGB,然后制作新图片。我想使用此解决方案,因为BufferedImage的setRGB()和getRGB()可能对于大型图片来说太慢了(如果我错了,请纠正我)。
我在这里阅读了一些文章,以获得一个byte []数组(such as here),以便每个像素由包含红色,绿色和蓝色值的数组的3或4个单元格表示(如果有4个,则带有附加的alpha值)单元格),这对我来说非常有用且易于使用。这是我用来获取此数组的代码(存储在我创建的PixelArray类中):
public PixelArray(BufferedImage image)
{
width = image.getWidth();
height = image.getHeight();
DataBuffer toArray = image.getRaster().getDataBuffer();
array = ((DataBufferByte) toArray).getData();
hasAlphaChannel = image.getAlphaRaster() != null;
}
最佳答案
尝试这个:
private BufferedImage createImageFromBytes(byte[] imageData) {
ByteArrayInputStream bais = new ByteArrayInputStream(imageData);
try {
return ImageIO.read(bais);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
关于arrays - 如何在Java中将byte []转换为BufferedImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12705385/
我是一名优秀的程序员,十分优秀!