1、获得BufferedImage对象
File file = new File(”001.jpg“);//本地图片
BufferedImage image=(BufferedImage)ImageIO.read(file);
URL url= new URL(”http://*******“);//通过图片url
BufferedImage image=(BufferedImage)ImageIO.read(url);
2、创建BufferedImage对象
private static BufferedImage createBufferedImage(final boolean aa) {
final BufferedImage bi = new BufferedImage(SIZE, SIZE,
BufferedImage.TYPE_INT_RGB);
final Graphics2D bg = bi.createGraphics();
bg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
aa ? RenderingHints.VALUE_ANTIALIAS_ON
: RenderingHints.VALUE_ANTIALIAS_OFF);
bg.setColor(Color.RED);
bg.fillRect(0, 0, SIZE, SIZE);
bg.translate(100, 100);
bg.rotate(Math.toRadians(90));
bg.setColor(Color.BLACK);
bg.setFont(bg.getFont().deriveFont(20.0f));
bg.drawString("MMMMMMMMMMMMMMMM", 0, 0);
bg.dispose();
return bi;
}
private static BufferedImage createImage(int scale) throws Exception {
BufferedImage image = new BufferedImage(scale * 200, scale * 300,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();
g.setColor(scale == 1 ? COLOR_1X : COLOR_2X);
g.fillRect(0, 0, scale * 200, scale * 300);
g.dispose();
return image;
}
3、获取图片的每个像素点的像素值
private static HashSet getAntialiasedColors(Object aaHint, int lcdContrast) {
JLabel label = new JLabel("ABCD");
label.setSize(label.getPreferredSize());
label.putClientProperty(KEY_TEXT_ANTIALIASING, aaHint);
label.putClientProperty(KEY_TEXT_LCD_CONTRAST, lcdContrast);
int w = label.getWidth();
int h = label.getHeight();
BufferedImage buffImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffImage.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, w, h);
label.paint(g);
g.dispose();
HashSet<Color> colors = new HashSet<>();
for (int i = 0; i < w; i++) {
for (int j = 0; j < h; j++) {
Color color = new Color(buffImage.getRGB(i, j));
colors.add(color);
}
}
return colors;
}
4、压缩图片
/**
* @param is
* @param deistPath
* @param newWidth
* @param newHeight
* @return int
* @Title: saveCompress
* @Description: 压缩图片,统一压缩成JPG格式,返回压缩后的大小(字节)
*/
public static int saveCompress(InputStream is, String deistPath,
int newWidth, int newHeight) {
try {
BufferedImage srcImage = ImageIO.read(is);
BufferedImage destImage = resize(srcImage, newWidth, newHeight);
File deistFile = new File(deistPath);
String fileName = deistFile.getName();
String formatName = fileName
.substring(fileName.lastIndexOf('.') + 1);
ImageIO.write(destImage, formatName, deistFile);
return (int) deistFile.length();
} catch (Exception e) {
return -1;
}
}
5、比较两个BufferedImage图片
/**
* Compares two images.
*/
private static void compareImage(final BufferedImage bi1,
final BufferedImage bi2)
throws IOException {
for (int i = 0; i < SIZE; ++i) {
for (int j = 0; j < SIZE; ++j) {
if (bi1.getRGB(i, j) != bi2.getRGB(i, j)) {
ImageIO.write(bi1, "png", new File("image1.png"));
ImageIO.write(bi2, "png", new File("image2.png"));
throw new RuntimeException("Failed: wrong text location");
}
}
}
}