gpt4 book ai didi

java - 使用 ImageWriter 保存为 JPEG 时将 Alpha channel 转换为白色

转载 作者:行者123 更新时间:2023-12-02 08:08:49 25 4
gpt4 key购买 nike

我使用以下代码片段将 png 图像转换为 jpeg:

ByteArrayOutputStream image1baos = new ByteArrayOutputStream();

image1 = resizeImage(cropImage(image1, rect1), 150);

ImageWriter writer = null;
Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("jpg");
if (iter.hasNext()) {
writer = (ImageWriter) iter.next();
}

ImageOutputStream ios = ImageIO.createImageOutputStream(image1baos);
writer.setOutput(ios);

// set the compression quality
ImageWriteParam iwparam = new MyImageWriteParam();
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwparam.setCompressionQuality(0.2f);

// write image 1
writer.write(null, new IIOImage(image1, null, null), iwparam);

ios.flush();

// set image 1
c.getItem1().setImageData(image1baos.toByteArray());

我想将 Alpha channel 转换为白色,而不是默认情况下的黑色,但我找不到方法来做到这一点。将不胜感激任何帮助!

最佳答案

我的解决方案很丑陋,而且可能很慢,但它是一个解决方案:)

    BufferedImage img = <your image>
for( int i = 0; i < img.getWidth( ); i++ )
for( int j = 0; j < img.getHeight( ); j++ ) {
// get argb from pixel
int coli = img.getRGB( i, j );
int a = coli >> 24 & 0xFF;
int r = coli >> 16 & 0xFF;
int g = coli >> 8 & 0xFF;
int b = coli & 0xFF;
coli &= ~0xFFFFFFFF;
// do what you want with a, r, g and b, in your case :
a = 0xFF;
// save argb
coli |= a << 24;
coli |= r << 16;
coli |= g << 8;
coli |= b << 0;
img.setRGB( i, j, coli );
}
}

当然,如果只需要调整Alpha channel ,则可以减少60%的代码。我保留了所有 RGB 内容以供进一步引用。

关于java - 使用 ImageWriter 保存为 JPEG 时将 Alpha channel 转换为白色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7767191/

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