欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

RGBA 图片格式转换 RGB 无损

发布时间:2023/12/14 编程问答 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 RGBA 图片格式转换 RGB 无损 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

拿到的图片是webp格式的,然后系统无法处理。只能使用google code的dwebp工具,把图片转成png或者jpg的。

这一步是ok了。

但是转成的图片是RGBA的,系统只能处理RGB。。。

报了下面的错:

java.lang.ArrayIndexOutOfBoundsException: 3at java.awt.image.ComponentSampleModel.getPixel(ComponentSampleModel.java:750)at java.awt.image.Raster.getPixel(Raster.java:1519)at net.semanticmetadata.lire.imageanalysis.features.global.AutoColorCorrelogram.hsvImage(AutoColorCorrelogram.java:230)at net.semanticmetadata.lire.imageanalysis.features.global.AutoColorCorrelogram.extract(AutoColorCorrelogram.java:242)at net.semanticmetadata.lire.builders.GlobalDocumentBuilder.extractGlobalFeature(GlobalDocumentBuilder.java:199)at net.semanticmetadata.lire.builders.GlobalDocumentBuilder.getGlobalDescriptorFields(GlobalDocumentBuilder.java:217)at net.semanticmetadata.lire.builders.GlobalDocumentBuilder.createDescriptorFields(GlobalDocumentBuilder.java:265)at net.semanticmetadata.lire.builders.GlobalDocumentBuilder.createDocument(GlobalDocumentBuilder.java:287)at net.semanticmetadata.lire.sampleapp.Indexer.main(Indexer.java:121)

还得把RGBA转成RGB格式。

试了下面的方法:

1,python 的pillow库,有损;

2,imageMagick(http://www.imagemagick.org/script/index.php),有损;

最后找到了这个:https://github.com/dermotte/LIRE/blob/master/src/main/docs/developer-docs/docs/imageread.md

也就是使用imageJ这个库

<!-- https://mvnrepository.com/artifact/net.imagej/ij --><dependency><groupId>net.imagej</groupId><artifactId>ij</artifactId><version>1.49c</version></dependency>

代码:

package com.liyao;import ij.ImagePlus; import ij.process.ImageConverter;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException;public class RGBConvert {public static void main(String args[]){BufferedImage oldRGBA = openImage("src/main/resources/whatsapp.png");File outputfile = new File("E:\\saved.png");try {ImageIO.write(oldRGBA, "png", outputfile);} catch (IOException e) {e.printStackTrace();}}public static BufferedImage openImage(String path) {ImagePlus imgPlus = new ImagePlus(path);// converting the image to RGBImageConverter imageConverter = new ImageConverter(imgPlus);imageConverter.convertToRGB();// returning the BufferedImage instancereturn imgPlus.getBufferedImage();} }

亲测无损。下面是结果:

这是RGBA 的图片:

我的cbir系统无法处理。

下面是使用python处理以后的RGB:

代码:

import PIL.Image as Imagergba_image = Image.open('wechat.png') rgba_image.save('new.png')

这个图片会报之前的错。

下面是使用imageJ处理以后的RGB:


没有报错。

总结

以上是生活随笔为你收集整理的RGBA 图片格式转换 RGB 无损的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。