package cn.images;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import java.util.UUID;
public class img1 {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
           gen(300,300,String.format("d:/ac/%s.jpg", UUID.randomUUID().toString().toLowerCase()));
        }
    }
    public static void gen(int ww, int hh,String filename){
        int w = ww;
        int h = hh;
        //建立图片  真彩
        BufferedImage img = new BufferedImage(ww,hh,BufferedImage.TYPE_INT_RGB);
        //Graphics类:可以理解为画笔,为我们提供了各种绘制图形
        Graphics2D g = img.createGraphics();
        //抗锯齿  使线条平滑
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
        g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
        //设置颜色
        g.setColor(Color.WHITE);
       // g.setColor(new Color(255,0,0));
        //画直线
        g.drawLine(0,0,ww,hh);
        //g.setColor(new Color(255,255,255));
        //填充椭圆
        g.fillOval(100,100,50,50);
//      随机生成10-100个圆形
        Random random = new Random();
        int len = random.nextInt(10,100);
        for(int i =0; i <len; i++) {
            //随机生成颜色
            g.setColor(new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255),random.nextInt(50)+50));
            int x = random.nextInt(w);
            int y = random.nextInt(h);
            //随机生成[0,50)的数 加上50就是这个范围加上50
            int size = random.nextInt(50)+50;
            g.fillOval(x,y,size,size);
        }
        g.dispose();
        //保存图片 格式为jpg  名字为m1.jpg
        try {
            ImageIO.write(img,"jpg",new File(filename));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
package cn.images;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
public class img2 {
    public static void main(String[] args) throws IOException {
        BufferedImage img = ImageIO.read(new File("d:/ac/mn.jpg"));
        int width = img.getWidth();
        int height = img.getHeight();
//        //10代表把图片改为黑白色
//        BufferedImage dst  = new BufferedImage(width, height,10);
//        //创建画笔
//        Graphics2D g = dst.createGraphics();
//        //把img图片拿过来 从(0,0)坐标开始 没有依赖
//        g.drawImage(img,0,0,null);
//        //清除画笔占用的内存
//        g.dispose();
//        //将拿到的图片给dst  格式为jpg 并命名为
//        ImageIO.write(dst,"jpg",new File("d:/ac/mn2.jpg"));
        Graphics2D g = img.createGraphics();
        //抗锯齿  使线条平滑
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
        g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
        //30 为不透明度
        Color color = new Color(0,255,0,30);
        g.setColor(color);
        //填充矩形 从(0,0)位置开始
        g.fillRect(0,0,width,height);
        //随机生成50各种颜色的圆形
        Random random = new Random();
        for(int i = 0; i <50; i++){
            //100为不透明度
            g.setColor(new Color(255,255,255,100));
            int w = random.nextInt(width);
            int h = random.nextInt(height);
            //填充圆形  随机位置
            g.fillOval(w,h,25,25);
        }
        //清除画笔占用的内存
        g.dispose();
//        //将拿到的图片给dst  格式为jpg 并命名为
        ImageIO.write(img,"jpg",new File("d:/ac/mn3.jpg"));
    }
}
package cn.images;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
public class FontDemo {
    public static void main(String[] args) throws Exception {
        BufferedImage src = ImageIO.read(new File("d:/ac/mn.jpg"));
        var w = src.getWidth();
        var h = src.getWidth();
        var i = src;
        var g = i.createGraphics();
        //抗锯齿  使线条平滑
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
        g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
        //g.drawString("hello 中文",50,100);
        g.setColor(Color.RED);
        //字体样式  字号
        g.setFont(new Font("微软雅黑",Font.BOLD,35));
        g.drawString("hello 中文",50,100);
        g.dispose();
        ImageIO.write(i,"png",new File("mn4.png"));
        //画完图自接打开
        Runtime.getRuntime().exec("cmd /k start mn4.png");
    }
}
package cn.images;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
public class Font1 {
    public static void main(String[] args)throws Exception{
        int width = 500;
        int height =500;
        BufferedImage img = new BufferedImage(width, height,1);
        Graphics2D g = img.createGraphics();
        //抗锯齿  使线条平滑
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
        g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
        //字体型号
        Font[] fs = Font.createFonts(new File("fonts/zh164hfyh.ttf"));
        //字体加粗 字号
        Font font = fs[0].deriveFont(Font.BOLD,30);
        g.setFont(font);
        g.setColor(Color.RED);
//        BasicStroke stroke = new BasicStroke(13);
//        g.setStroke(stroke);
        g.drawString("hello 中文",5,30);
//线坐标
//        g.drawLine(250,0,250,500);
        g.dispose();
        ImageIO.write(img,"jpg",new File("m2.jpg"));
        Runtime.getRuntime().exec("cmd /k start m2.jpg");
    }
}
package cn.images;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
public class font2 {
    public static void main(String[] args) throws Exception{
        int width = 500;
        int height = 500;
        BufferedImage img = new BufferedImage(width, height,1);
        Graphics2D g = img.createGraphics();
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
        g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
         String text = "版权所有";
         //字体型号
         Font f = Font.createFont(Font.TRUETYPE_FONT,new File("fonts/zh164hfyh.ttf"));
         //字号
         Font font = f.deriveFont(Font.BOLD,35);
         g.setFont(font);
         FontMetrics fm = g.getFontMetrics();
         int fw  =  fm.stringWidth(text);
         int fh = fm.getAscent() - (fm.getHeight() - fm.getAscent());
         g.setColor(Color.RED);
//         加粗
//         BasicStroke stroke = new BasicStroke(13);
//         g.setStroke(stroke);
//        左上角
         int sp = 10;
         int x = sp;
         int y = fh+sp;
//       居中
         x = (width - fw)/2;
         y = (height - fh)/2 + fh;
//      右下角
        x = width - fw - sp;
        y = height - fh + sp;
//      文字坐标
        g.drawString(text,x,y);
        g.setColor(Color.GREEN);
        g.drawLine(250,0,250,500);
        g.drawLine(0,250,500,250);
        g.dispose();
        ImageIO.write(img,"jpg",new File("m3.jpg"));
        Runtime.getRuntime().exec("cmd /k start m3.jpg");
    }
}