ImageIo图像操作

简介: ImageIo图像操作

 jpg 真彩无损压缩格式,网络上图像一般都jpg png 真彩无操损压缩格式,支持画布透明 gif 颜色不能超过256种颜色,所以此格式不是真彩,既支持帧静态图像,又支持多帧动态图像,是图像 文件中唯一支持动画的

public static void main(String[] args) throws IOException {
        //创建画板,1为jpg格式,2为png格式在后面再增加一个参数为透明度
        BufferedImage i = new BufferedImage(800, 800, 1);
        //创建画笔
        var m = i.createGraphics();
        //设置平滑度
        m.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
        m.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        m.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
        //设置画笔颜色
        m.setColor(Color.ORANGE);
        //fill为填充,fillRect填充矩形
        m.fillRect(0, 0, 800, 800);
        m.setColor(Color.WHITE);
        //m.drawArc(200, 200, 200, 200, 0, 90);
        //填充圆弧,画半圆
        m.fillArc(150, 150, 500, 500, 90, 180);
        m.setColor(Color.BLACK);
        m.fillArc(150, 150, 500, 500, -90, 180);
        m.setColor(Color.WHITE);
        m.fillArc(275, 150, 250, 250, -90, 180);
        m.setColor(Color.BLACK);
        m.fillArc(275, 400, 250, 250, 90, 180);
        m.setColor(Color.BLACK);
        m.fillOval(350, 225, 100, 100);
        m.setColor(Color.WHITE);
        //椭圆
        m.fillOval(350, 475, 100, 100);
        //关闭
        m.dispose();
        //画板写入文件
        ImageIO.write(i, "png", new File("taiji.png"));
        //系统运行打开图片
        Runtime.getRuntime().exec("cmd /k start taiji.png");
    }

image.gif

水印操作

public static void main(String[] args) throws IOException {
        BufferedImage i = new BufferedImage(800, 800, 1);
        var m = i.createGraphics();
        //设置抗锯齿(平滑度)
        m.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
        m.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        m.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
        m.setColor(Color.YELLOW);
        m.fillRect(0, 0, 800, 800);
        m.setColor(Color.BLACK);
        //虚线
        for (int j = 0; j < 100; j++) {
            int x = j * 10 + 5;
            int x1 = j * 10 + 10;
            int y = 400;
            m.drawLine(x, y, x1, y);
        }
        for (int j = 0; j < 100; j++) {
            int x = j * 10 + 5;
            int x1 = j * 10 + 10;
            int y = 400;
            m.drawLine(y, x, y, x1);
        }
        m.setColor(Color.red);
        //文字设置
        Font font = new Font("微软雅黑", Font.BOLD, 30);
        m.setFont(font);
        String text = "此版权-陈卸甲";
        var fm = m.getFontMetrics(font);
        var tw = fm.stringWidth(text);
        var th = fm.getHeight();
        //Ascent是baseline之上至字符最高处的距离,Descent是baseline之下至字符最低处的距离
        m.drawString(text, i.getWidth() / 2 - tw / 2, i.getHeight() / 2 + (fm.getAscent() - fm.getDescent()) / 2);
        m.drawString(text, i.getWidth() - tw - 10, i.getHeight() - fm.getDescent() - 10);
        m.drawString(text, 10, fm.getAscent() + 10);
        m.dispose();
        ImageIO.write(i, "jpg", new File("strimg.jpg"));
        Runtime.getRuntime().exec("cmd /k start strimg.jpg");
    }

image.gif


目录
相关文章
|
存储 Cloud Native Linux
openCV图像读取和显示
openCV图像读取和显示
|
Java
Java实现图片格式转换(通过ImageIO)
Java实现图片格式转换(通过ImageIO)
892 0
|
数据挖掘 API 计算机视觉
第97天:图像库 PIL(二)
第97天:图像库 PIL(二)
241 0
第97天:图像库 PIL(二)
|
5月前
|
计算机视觉
【已解决】cv2.imread读取中文名称图片报错或者无法保存中文名图片:使用cv2.imdecode与cv2.imencode解决
【已解决】cv2.imread读取中文名称图片报错或者无法保存中文名图片:使用cv2.imdecode与cv2.imencode解决
|
5月前
|
算法 Java API
在VC++中使用CxImage库读写图像实现像素操作
在VC++中使用CxImage库读写图像实现像素操作
35 0
|
5月前
|
存储 编解码 API
【图像文本化】Base64编解码OpenCV4中 Mat 对象
【图像文本化】Base64编解码OpenCV4中 Mat 对象
78 0
|
开发者 Kotlin
将JPG图像根据色彩范围转换为PNG透明图像(kotlin)
这实际上是一个十分普遍的需求,在kotlin中如何完成这一任务呢?其实这样简单的操作不需要任何三方库,只需要BufferedImage的原生功能就能做到,约60行代码
182 0
|
API 计算机视觉 索引
OpenCV_02 图像的基本操作:图像IO+绘制图形+像素点+属性+图像通道+色彩空间的改变
注意:在调用显示图像的API后,要调用cv.waitKey()给图像绘制留下时间,否则窗口会出现无响应情况,并且图像无法显示出来。
107 0
|
编解码 计算机视觉
CV13 图像分辨率操作(图像金字塔与resize()函数)
其中,高斯核卷积运算就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值(券种不同)经过加权平均后得到。常见的 33与 55 高斯核(CV9 2D卷积与图像滤波)
200 0
|
自然语言处理 计算机视觉
使用cv和nlp完成图像的读取缩放旋转等……
使用cv和nlp完成图像的读取缩放旋转等……
108 0
使用cv和nlp完成图像的读取缩放旋转等……