java 图片编辑(合并,添加文字)

// 用到的包
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
 
 
public static void main(String[] args) {

        try {
            String serverUploadImgUrl = "/Users/biusun/Desktop/"; // 图片保存路径


//            背景图片 (注:此图片来源于网络)
            String backImgUrlStr = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1587644051898&di=54814ecdba4457113823e78af9d55682&imgtype=0&src=http%3A%2F%2Fpic.90sjimg.com%2Fdesign%2F01%2F45%2F68%2F00%2F5901fb923c111.png";
            InputStream backImgUrl = new URL(backImgUrlStr).openStream();
            BufferedImage backImg = ImageIO.read(backImgUrl);

//            要合并的图片 (注:此图片来源于网络)
            String imgUrlStr = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1587644124018&di=fbd350136cf6cd21f985f89e1ecda7d8&imgtype=0&src=http%3A%2F%2Fimgs.shougongke.com%2FPublic%2Fdata%2Fhand%2F201507%2F08%2Fstep%2F38%2F1436341208928.jpg";
            InputStream imgUrl = new URL(imgUrlStr).openStream();
            BufferedImage img = ImageIO.read(imgUrl);


            int backImgNewWidth = backImg.getWidth();// 背景图片宽度
            int backImgNewHeight = backImg.getHeight();// 背景图片高度度
//            生成新的合并的图片(调整图片的大小)
            int imgNewWidth = backImgNewWidth / 3;
//            BufferedImage imgNew = new BufferedImage(图片宽度, 图片高度, 图像类型);
            BufferedImage imgNew = new BufferedImage(imgNewWidth, imgNewWidth, BufferedImage.TYPE_INT_ARGB);
            Graphics2D g2d = imgNew.createGraphics();
            g2d.drawImage(img, 0, 0, imgNew.getWidth(), imgNew.getHeight(), null);
            g2d.dispose();

//            两图片合并

            int imgNewWidthPosition = (backImgNewWidth - imgNewWidth) / 2;
            int imgNewHeightPosition = (backImgNewHeight - imgNewWidth) / 2;

            Graphics g = backImg.getGraphics(); // backImg(注意
//            g.drawImage(图片, x 位置, y 位置, null);
            g.drawImage(imgNew, imgNewWidthPosition, imgNewHeightPosition, null); //把 imgNew,整合在 backImg 里面
//            g.dispose();

            //最后一个参数用来设置字体的大小(文字放在 liunx,可能会乱码,那是因为服务器上没有这个字体,要上传,自行百度)
            Font fTxtBottom = new Font("微软雅黑", Font.PLAIN, 30);
            Color myColorTxtBottom = Color.BLACK;  //图片颜色
            g.setColor(myColorTxtBottom);
            g.setFont(fTxtBottom);
//            g.drawString(文字, x 位置, y 位置);
            g.drawString("陌生人,您好!", backImgNewWidth / 2, backImgNewHeight / 5);

//            第二段文字 (图片也可以多张)
//            Font fTxtBottom = new Font("微软雅黑", Font.PLAIN, 30);
//            Color myColorTxtBottom = Color.BLACK;  //图片颜色
//            g.setColor(myColorTxtBottom);
//            g.setFont(fTxtBottom);
////            g.drawString(文字, x 位置, y 位置);
//            g.drawString("陌生人,您好!", backImgNewWidth / 2, backImgNewHeight / 3);

            g.dispose(); //调这个方法就是开始这个整合 (可以多张图片,多个文字整合成一张图片,只有把他们放在这方法里面就行)

            String imgName = new Date().getTime() + ".jpg"; //生成的图片名称
            File newFile = new File(serverUploadImgUrl, imgName); //生成新的图片

//          此处要写PNG否则可能会出现遮罩层
            ImageIO.write(backImg, "png", newFile);

        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("结束");
    }

 

你可能感兴趣的:(java 图片编辑(合并,添加文字))