谈恋爱套路太少?教你如何用30行java代码重绘女朋友美照

不说废话,先上女朋友

谈恋爱套路太少?教你如何用30行java代码重绘女朋友美照_第1张图片

效果图:

谈恋爱套路太少?教你如何用30行java代码重绘女朋友美照_第2张图片

我对你的爱,在每一个字里行间哦~

  • 完整代码(关键部分已经放在注释中了):
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;

public class MyFontImage {
    public static void createFongImg(String path){
        String base = "我爱你"; //想要输出的文字
        try{
            BufferedImage image = ImageIO.read(new File(path));
            BufferedImage newImage = new BufferedImage(image.getWidth(),image.getHeight(),image.getType());
            Graphics2D graphics2D = (Graphics2D) newImage.getGraphics();
            //在里可以控制字体大小,一般建议在8~16,清晰度较高的图片,12就正好
            graphics2D.setFont(new Font("宋体",Font.BOLD,12));
            int index = 0;
            //下面的两个12参数是每隔多少像素执行一次操作,且考虑到了字体的颜色转换,建议这里的步长和上面字体大小相同
            for(int y = 0; y < image.getHeight(); y += 12){
                for (int x = 0; x < image.getWidth(); x += 12){
                    int pxcolor = image.getRGB(x,y);
                    int r = (pxcolor & 0xff0000) >> 16,
                            g = (pxcolor & 0xff00) >> 8,
                            b = pxcolor & 0xff;
                    graphics2D.setColor(new Color(r, g, b));
                    graphics2D.drawString(String.valueOf(base.charAt(index % base.length())), x, y);
                    index++;
                }
            }
            //这里是图片的输出路径,这里默认输出在工程目录下
            ImageIO.write(newImage, "JPG", new FileOutputStream("temp.jpg")); 
        }catch (Exception e){
            e.printStackTrace();
        }
    };
    public static void main(String args[]){
    //这里填写原图路径
        MyFontImage.createFongImg("girl.jpg");
        System.out.println("重绘完成");
    }
}

还等什么,赶紧上手试试吧!!

参考文章:https://blog.csdn.net/Newbie___/article/details/106316330

谈恋爱套路太少?教你如何用30行java代码重绘女朋友美照_第3张图片

你可能感兴趣的:(JavaSE,工具使用)