剪切图片和为图片增加文字

本文提供了两种实用的图片处理方法:一是如何使用Java实现图片的裁剪并保存;二是如何在图片上添加文字。通过具体代码示例,展示了如何调整图片尺寸、位置以及添加特定文字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己做这个找了不少例子,发现例子较少,所以把自己的代码也贴出来,给大家多些参考。

一、将本地图片剪切成规定大小的图片,并保存到本地。以下是部分核心代码

//w-目标图像宽,h-目标图像高,o_w-待裁剪的图像宽,o_h-待裁剪的图像高,l-剪切部分距离待裁图像左边距,t-//剪切部分距离待裁图像上边距,in是源图片的路径及名称,out是剪切后图片的路径及名称

    import java.awt.*;

import java.io.*;

import com.sun.image.codec.jpeg.*;

BufferedImage bufferedImage = new BufferedImage(w, h,
     BufferedImage.TYPE_INT_RGB);
   Graphics2D g2d = bufferedImage.createGraphics();
   
   try {
    Frame frame = new Frame();
    frame.addNotify();
    MediaTracker mt = new MediaTracker(frame);// frame acts as an ImageObserver
    Image img = Toolkit.getDefaultToolkit().getImage(in);//取到源图片
    mt.addImage(img, 0);
    mt.waitForAll();
    g2d.setColor(Color.white); //图片底色为白色
    g2d.fillRect(0, 0, (w + l), (h + t)); //先画一个白底矩形
    g2d.drawImage(img, -l, -t, o_w, o_h, null);//先将图片定为当前放大缩小后的大小
    g2d.dispose();
    g2d.drawImage(img, 0, 0, w, h, l, t, (l + w), (h + t),
      Color.WHITE, null);//裁剪
    g2d.dispose();
    FileOutputStream outfile = new FileOutputStream(out);
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outfile);
    encoder.encode(bufferedImage);//输出图片
    outfile.close();
   } catch (Exception e) {
    e.printStackTrace();
   }

二、为本地图片增加文字。以下是部分核心代码

  try {
   Frame frame = new Frame();
   frame.addNotify();
   MediaTracker mt = new MediaTracker(frame);// frame acts as an ImageObserver
   InputStream imageIn = new FileInputStream(new File("c://test.jpg"));
   JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
   BufferedImage image = decoder.decodeAsBufferedImage();           
   Graphics2D g2d = image.createGraphics();
   g2d.setColor(Color.YELLOW);
   Font mFont = new Font("仿宋体",Font.PLAIN,20);
   g2d.setFont(mFont);
   //输出文字           
   g2d.drawString("图片增加文字测试",50,50);    
   g2d.dispose();
   //输出数据流
   FileOutputStream outfile = new FileOutputStream("d://test1.jpg");
   JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outfile);
   encoder.encode(image);           
   imageIn.close();
  } catch (Exception e) {
   e.printStackTrace();
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值