Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ImageWriter保存为JPEG时将alpha通道转换为白色_Java_Image_Png_Awt_Alpha Transparency - Fatal编程技术网

Java 使用ImageWriter保存为JPEG时将alpha通道转换为白色

Java 使用ImageWriter保存为JPEG时将alpha通道转换为白色,java,image,png,awt,alpha-transparency,Java,Image,Png,Awt,Alpha Transparency,我正在使用以下代码片段将png图像转换为jpeg: ByteArrayOutputStream image1baos = new ByteArrayOutputStream(); image1 = resizeImage(cropImage(image1, rect1), 150); ImageWriter writer = null; Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("jpg");

我正在使用以下代码片段将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());
ByteArrayOutputStream image1baos=newbytearrayoutputstream();
image1=大小图像(cropImage(image1,rect1),150);
ImageWriter=null;
迭代器iter=ImageIO.getImageWritersByFormatName(“jpg”);
if(iter.hasNext()){
writer=(ImageWriter)iter.next();
}
ImageOutputStream ios=ImageIO.createImageOutputStream(image1baos);
writer.setOutput(ios);
//设置压缩质量
ImageWriteParam iwparam=新的MyImageWriteParam();
iwparam.setCompressionMode(ImageWriteParam.MODE_显式);
iwparam.setCompressionQuality(0.2f);
//写图片1
writer.write(null,新IIOImage(image1,null,null),iwparam);
ios.flush();
//设置图像1
c、 getItem1().setImageData(image1baos.toByteArray());

我想将alpha通道转换为白色,而不是默认情况下的黑色,但我找不到一种方法。非常感谢您的帮助

我的解决方案很难看,可能很慢,但它是一个解决方案:)

buffereImage img=
for(inti=0;i>24&0xFF;
int r=coli>>16&0xFF;
int g=coli>>8&0xFF;
int b=coli&0xFF;
coli&=~0xFFFFFFFF;
//在您的情况下,对a、r、g和b执行您想要的操作:
a=0xFF;
//保存argb
大肠杆菌|=a
    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 );
        }
    }