人像分割工具类代码-Java
/**
* 图像转换
* @param labelmapBase64 分割结果图片,检测出的二值图像,base64编码之后
* @param realWidth 图片原始高度px
* @param realHeight 图片原始宽度px
*/
public static void convert(String labelmapBase64, int realWidth, int realHeight) {
try {
BASE64Decoder base64Decoder = new BASE64Decoder();
byte[] bytes = base64Decoder.decodeBuffer(labelmapBase64);
InputStream is = new ByteArrayInputStream(bytes);
BufferedImage image = ImageIO.read(is);
BufferedImage newImage = resize(image, realWidth, realHeight);
BufferedImage grayImage = new BufferedImage(realWidth, realHeight, BufferedImage.TYPE_BYTE_GRAY);//灰度图
for(int i= 0 ; i < realWidth ; i++){
for(int j = 0 ; j < realHeight; j++){
int rgb = newImage.getRGB(i, j);
grayImage.setRGB(i, j, rgb * 255); //将像素存入缓冲区 这一步很重要哦
}
}
File newFile = new File("G:/gray001.jpg");
ImageIO.write(grayImage, "jpg", newFile);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 重置图片大小
* @param img 图片数据
* @param newW 图片宽度
* @param newH 图片高度
* @return
*/
public static BufferedImage resize(BufferedImage img, int newW, int newH) {
Image tmp = img.getScaledInstance(newW, newH, Image.SCALE_SMOOTH);
BufferedImage dimg = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = dimg.createGraphics();
g2d.drawImage(tmp, 0, 0, null);
g2d.dispose();
return dimg;
}