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)
1108 0
|
数据挖掘 API 计算机视觉
第97天:图像库 PIL(二)
第97天:图像库 PIL(二)
274 0
第97天:图像库 PIL(二)
|
8月前
|
算法 Java API
在VC++中使用CxImage库读写图像实现像素操作
在VC++中使用CxImage库读写图像实现像素操作
74 0
|
8月前
|
存储 编解码 API
【图像文本化】Base64编解码OpenCV4中 Mat 对象
【图像文本化】Base64编解码OpenCV4中 Mat 对象
145 0
|
9月前
|
算法 Java Apache
Java一分钟之-图像处理:BufferedImage与ImageIO
Java图像处理涉及`BufferedImage`和`ImageIO`。`BufferedImage`提供像素级访问,而`ImageIO`用于读写图像。常见问题包括:不支持的图像格式、处理尺寸不当、忽略异常和未关闭流。解决方法是检查插件支持、正确处理尺寸、捕获异常和及时关闭流。实践中不断优化,提升代码性能和稳定性。
427 0
|
开发者 Kotlin
将JPG图像根据色彩范围转换为PNG透明图像(kotlin)
这实际上是一个十分普遍的需求,在kotlin中如何完成这一任务呢?其实这样简单的操作不需要任何三方库,只需要BufferedImage的原生功能就能做到,约60行代码
213 0
|
Linux 计算机视觉 C++
C++ 结合 opencv读取图片与视频
操作系统: Linux(采用远程服务器主机进行代码编写) 需提前配置(安装)cmake 远程连接服务器进行操作, 直接新建立的终端输入
277 0
|
计算机视觉 Python
|
C++
CxImage内存方式转换图像
最近,处于项目需要,需要将Bmp转换为JPEG格式。以前做过,采用的是GDI+的方式,该方式有一个极大地缺陷为无法实现跨平台处理。闲话少说,进入正题。 [cpp] view plain copy   CxImage cxImageBmp(pRGBBuffer, dwRGBSize, CXIMAGE_FORMAT_BMP);      cxImageBmp.Save("D:\\ttt.jpg",CXIMAGE_FORMAT_JPG);   该方式很正常,顺利将RGB格式24位BMP图像转化为本地JPG文件并保存下来。
1223 0