RGBA 图片格式转换 RGB 无损
生活随笔
收集整理的這篇文章主要介紹了
RGBA 图片格式转换 RGB 无损
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
拿到的圖片是webp格式的,然后系統(tǒng)無法處理。只能使用google code的dwebp工具,把圖片轉(zhuǎn)成png或者jpg的。
這一步是ok了。
但是轉(zhuǎn)成的圖片是RGBA的,系統(tǒng)只能處理RGB。。。
報(bào)了下面的錯(cuò):
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轉(zhuǎn)成RGB格式。
試了下面的方法:
1,python 的pillow庫,有損;
2,imageMagick(http://www.imagemagick.org/script/index.php),有損;
最后找到了這個(gè):https://github.com/dermotte/LIRE/blob/master/src/main/docs/developer-docs/docs/imageread.md
也就是使用imageJ這個(gè)庫
<!-- 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();} }親測無損。下面是結(jié)果:
這是RGBA 的圖片:
我的cbir系統(tǒng)無法處理。
下面是使用python處理以后的RGB:
代碼:
import PIL.Image as Imagergba_image = Image.open('wechat.png') rgba_image.save('new.png')這個(gè)圖片會(huì)報(bào)之前的錯(cuò)。
下面是使用imageJ處理以后的RGB:
沒有報(bào)錯(cuò)。
總結(jié)
以上是生活随笔為你收集整理的RGBA 图片格式转换 RGB 无损的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于MATLAB印刷体汉字识别解析
- 下一篇: MATLAB的安装步骤