gpt4 book ai didi

java - 在 Java 中垂直翻转原始图像

转载 作者:搜寻专家 更新时间:2023-11-01 02:54:30 27 4
gpt4 key购买 nike

我需要在 Java 中翻转一个行反转的原始图像。我所说的倒置是指图像的第一行存储在文件的末尾。

我设法通过使用辅助缓冲区重新排序图像行来实现我想要的。我在下面包含了我的代码。

我认为这可以通过转换坐标来优化,避免内存复制。我试图实现一个会反转行的 DataBuffer,但我使用的栅格需要一个 DataBufferByte(最终类)。

有谁知道更优化的方法来做我想做的事?

谢谢

...
int w = 640;
int h = 480;
byte[] flippedData = new byte[640*480*4];
int scanLineLength = w*4;
for(int i=0;i!=h; ++i) {
System.arraycopy(originalData, scanLineLength*i, flippedData, scanLineLength*(h-i)-scanLineLength, scanLineLength);
}

DataBuffer db = new DataBufferByte(flippedData,flippedData.length);
WritableRaster raster = Raster.createInterleavedRaster(db, w, h, scanLineLength, 4, new int[]{2,1,0}, new Point(0,0));
ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
ColorModel cm = new ComponentColorModel(cs, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);

BufferedImage img = new BufferedImage(cm, raster, false, null);
ImageIO.write(img, "JPEG", new File("out.jpg"));

最佳答案

使用java.awt.AffineTransform :

Affine transformations can be constructed using sequences of translations, scales, flips, rotations, and shears.

参见 thisthis查看如何使用 AffineTransform

实现翻转

关于java - 在 Java 中垂直翻转原始图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4326739/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com