BufferImage 与imagezh整理归纳

BufferImage为image的直接子类,增加了缓冲功能。BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片,通常用来做图片修改操作如大小变换、图片变灰、设置图片透明或不透明等。

加载图片到内存:
BufferedImage image = ImageIO.read(new FileInputStream(imgPath));//利用getGraphics()函数获得图形上下文作进一步操作。

public static void targetZoomOut(String sourcePath) { //将目标图片缩小成256*256并保存
        File file1 = new File(sourcePath); //用file1取得图片名字
        String name = file1.getName();
 
        try {
            BufferedImage input = ImageIO.read(file1);
            BufferedImage inputbig = new BufferedImage(256, 256, BufferedImage.TYPE_INT_BGR);
            Graphics2D g = (Graphics2D) inputbig.getGraphics();
            g.drawImage(input, 0, 0,256,256,null); //画图
            g.dispose();
            inputbig.flush();
 
            File file2 = new File("e:/"); //此目录保存缩小后的关键图
            if (file2.exists()) {
                System.out.println("多级目录已经存在不需要创建!!");
            } else {
                //如果要创建的多级目录不存在才需要创建。
                file2.mkdirs();
            }
            String fname = name.substring(0, name.lastIndexOf("."));//新名字
            ImageIO.write(inputbig, "jpg", new File("e:/" + fname + ".jpg")); //将其保存在C:/imageSort/targetPIC/下
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
BufferedImage input = ImageIO.read(file1);
Image scaledImage = input.getScaledInstance(256, 256,Image.SCALE_DEFAULT);
BufferedImage output = new BufferedImage(256, 256,BufferedImage.TYPE_INT_BGR);
output.createGraphics().drawImage(scaledImage, 0, 0, null); //画图
private static void DrawWordOnImage(BufferedImage image, String word, int x, int y)
 {
  if(image != null)
  {
   Graphics2D gd = image.createGraphics();
   //set the color
   Random random = new Random();
   int colorIdx = Math.abs(random.nextInt() % RANDOM_COLOR.length);
   gd.setColor(RANDOM_COLOR[colorIdx]);
   //set the font
   int fontIdx = Math.abs(random.nextInt() % RANDOM_FONT.length);
   gd.setFont(RANDOM_FONT[fontIdx]);
   //draw the word
   gd.drawString(word, x, y);
  }
 }




 

你可能感兴趣的:(Java,服务器端开发)