java 图像bufferimage 类型转换

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能够实现的同学也请指导一番。谢谢。