java 图像 bufferimage 怎样从BufferedImage.TYPE_3BYTE_BGR 转为BufferedImage.TYPE_INT_RGB
new BufferedImage( 原bufferimage.getWidth(), 原bufferimage.getHeight(), BufferedImage.TYPE_INT_RGB, 原bufferimage.getColorModel())
查看BufferedImage 的API 发现有一个构造函数是需要传如图片的宽度、高度和预定义图像类型 BufferedImage(int width, int height, int imageType) ;
代码修改后,图片正常显示!代码如下:
public static String createImg(byte[] bytes,String imgName,String path){
StringBuilder fullPath = new StringBuilder(imgFile(path)).append(File.separator).append(imgName).append("."+ImgType);
File img = null;
try {
img = new File(fullPath.toString());
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
BufferedImage bi =ImageIO.read(bais);
saveJpgImage(bi,fullPath.toString());
bais.close();
} catch (Exception e) {
e.printStackTrace();
}
return filePath+File.separator+imgName+"."+ImgType;
}
public static void saveJpgImage(BufferedImage image,
String filePath) {
BufferedImage bufferedImage = new BufferedImage(image.getWidth(), image
.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
bufferedImage.getGraphics().drawImage(image, 0, 0, null);
saveImage(bufferedImage, ImgType, filePath);
}
public static void saveImage(BufferedImage image, String format,
String filePath) {
try {
ImageIO.write(image, format, new File(filePath));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
使图片变灰有两种方法,一种是使用现成的类,一种是自己对每个像素进行操纵。
使用现成的类ColorConvertOp,它的作用就是将一个颜色模式的图片转换为另一个颜色模式的图片。颜色模式是诸如RGB颜色模式、灰度颜色模式等决定图片色彩的东西,比如一副RGB颜色模式的图片是彩色,但我们把它复制到一个灰度颜色模式的图片上时,图片就成灰色的了。
JAVA中使用BufferedImage操作合成图片,在一张图片上加入新的图片和文字等等。其中Mat是opencv的类,懒得改了,本人试过使用OPENCV进行类似的处理,结果总是失败,所以把Mat转换成为BufferedImage后,再进行处理,以下是关键方法,供大家学习使用,省得走弯路,有使用Mat能够实现的同学也请指导一番。谢谢。