0
点赞
收藏
分享

微信扫一扫

image IO图像流

钟罗敏 2022-09-26 阅读 152

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");


}
}

举报

相关推荐

0 条评论