图片转字符图片工具类

news2024/11/24 6:34:59
       ├── cn.xsshome.imagetool            //包名
       ├── convert                               
       │       └── ImageToChar             //图片转字符图片、文本方法  
       ├── slideverifycode        
       │       └── SlideVerifyCodeGenerateUtil      //滑块验证码工具类代码       
       │       └── SlideVerifyCode         //滑块验证码对象   
       ├── util        
       │       └── AnimatedGifEncoder      //GIF所需工具类代码
       │       └── Base64Util              //图片数据转base64编码工具类     
       │       └── GifDecoder              //Gif图片处理工具类代码
       │       └── GifImageUtil            //GIF图片添加文字特效工具类代码  
       │       └── GongGeUtil              //九宫格图片处理工具类代码      
       │       └── LZWEncoder              //图片处理所需工具类代码
       │       └── MergeImageUtil          //图片特效合并工具类代码
       │       └── NeuQuant                //图片处理所需工具类代码
       │       └── PngColoringUtil         //透明图片增加背景色工具类代码
       │       └── RotateImageUtil         //图片旋转工具类代码
       │       └── ImageLosslessUtil       //图片无损保存工具类代码   
       │       └── MergeImageFontUtil      //图片文字合并工具类代码   
       │       └── ImageGrayUtil           //图片灰度处理工具类代码   
       │       └── ImageDPIHandleUtil      //修改图片DPI工具类代码(仅支持JPG)-基于com.sun.image.codec
       │       └── ImagePixelUtil          //像素风工具类代码
       │       └── ImageWaterMarkUtil      //图片增加水印工具类代码
       ├── zoom   
       └──     └── ImageHelper             //图片缩放工具类代码 

示例代码

public class Sample {
	public static void main(String[] args) throws Exception {
		ImageToChar.load("G:/phone.jpg", "F:/gif/woman.txt");//静态图片转字符保存为txt文件
		ImageToChar.loadGif("C:/Users/Administrator/Desktop/页面录屏显示.gif", "F:/gif/");//动图转为动态的字符图片
		BufferedImage bi = null;
		bi = ImageIO.read(new File("G:/body.jpg"));
        String bytePic = ImageToChar.txtToImageByBase64(bi);//静态图转字符 返回转换后图片的base64
        System.out.println(bytePic);
	}
}

透明图片增加背景色示例代码

    public static void main(String[] args) throws Exception{
        String image = "F:\\testimg\\1011.png";//原始图片路径
        String resultImage = "F:\\testimg\\10111700.jpg";//处理后保存的图片路径
        changePNGBackgroudColor(image,resultImage, Color.pink);//Color.pink 即图片背景颜色
    }

图片旋转示例代码

public class RotateSample {
    public static void main(String[] args) throws  Exception {
        long start = System.currentTimeMillis();
        BufferedImage src = ImageIO.read(new File("E:\\testimg\\glassess.png"));//原图片本地路径
        BufferedImage des = RotateImageUtil.rotateImage(src,20);//旋转的角度
        ImageIO.write(des, "png", new File("E:\\testimg\\glassess2.png"));//旋转后保存的图片
        long end = System.currentTimeMillis();
        System.out.println("开始时间:" + start+ "; 结束时间:" + end+ "; 总共用时:" + (end - start) + "(ms)");
    }
}

GIF图片加文字特效示例代码

    public static void main(String[] args) throws Exception {
        GifImageUtil gifImageUtil = new GifImageUtil();
        String imagesavePath  = "C:\\Users\\xiaoshuai\\Desktop";//图片保存路径
        String imagesaveName = String.valueOf(System.currentTimeMillis());//图片保存名称 不包含后缀名
        String image  = "C:\\Users\\xiaoshuai\\Desktop\\db.gif";//原始图片
        String result = gifImageUtil.gifAddText(imagesavePath,imagesaveName,"微软雅黑",25,Color.pink,image,"图片添加文字","测试一下","1234","4567");
        System.out.println(result);
    }

白底图片转换透明底图片示例代码

    public static void main(String[] args) {
        System.out.println(PngConvertUtil.transparentImg("F:/testimg/hand.jpg", "F:/testimg/hand2020.png"));
    }

增加水印示例代码

    public static void main(String[] args) {
        //水印图片在指定位置
        BufferedImage image1 =  ImageWaterMarkUtil.addImgWaterMark("F://testimg//water.png", "F://testimg//gjy2.jpg", 4);
        File file = new File("F:\\testimg\\2020082701.jpg");
        ImageIO.write(image1, "jpg", file);
        //文本水印 铺满图片
        BufferedImage image2 = ImageWaterMarkUtil.addFullTextWaterMark("F://testimg//gjy2.jpg","小帅丶代码");
        File file2 = new File("F:\\testimg\\2020082702.jpg");
        ImageIO.write(image2, "jpg", file2);
        //图片水印 铺满图片
        BufferedImage image3 = ImageWaterMarkUtil.addFullImgWaterMark("F://testimg//gjy2.jpg","F://testimg//water.png");
        File file3 = new File("F:\\testimg\\2020082703.jpg");
        ImageIO.write(image3, "jpg", file3);
    }

GIF图片加文字特效示例图

原始图

转换图

给图片指定区域增加矩形框

原始图

转换图

给透明图片增加背景图

    public static void main(String[] args) throws Exception{
        //最好保证宽或高一致  
        BufferedImage src = ImageIO.read(new File("F:\\testimg\\gjy2.jpg"));//背景图
        BufferedImage png = ImageIO.read(new File("F:\\testimg\\banner.png"));//透明图
        BufferedImage image = MergeImageUtil.mergePendant(src, png, 0, 0, 1);
        File file = new File("F:\\testimg\\banner320.jpg");//输出图片路径
        ImageIO.write(image, "jpg", file);
    }

原始图

透明图

背景图

效果图

给图片增加水印

原图

文本内容

小帅丶代码

水印图片 点击空白即可看到png图片中的内容

增加文本水印铺满图片

增加图片水印铺满图片

增加图片水印指定位置

给图片增加文字(消除锯齿、无损保存处理后图)

public class FontImgMergeSample {
    /** 字体 */
    private static String FONT_FAMILY = "方正粗黑宋简体";
    /** 字体大小 */
    private static Integer FONT_SIZE = 88;
    /** 颜色 */
    private static Color FONT_COLOR = new Color(255,255,255);

    public static void main(String[] args) throws Exception{
        long startTime = System.currentTimeMillis();
        //原图本地路径、保存图的本地路径
        String sourcePath = "F:\\testfile\\testimg\\banner.jpg";
        String targetPath = "F:\\testfile\\testimg\\mergebanner.jpg";
        BufferedImage image = ImageIO.read(new File(sourcePath));
        //文本
        String content = "小帅测试代码";
        Graphics2D g = (Graphics2D) image.getGraphics();
        //填充文字 从左往右
        MergeImageFontUtil.setContentToImgLR(content, g, 100, 200,FONT_FAMILY,FONT_SIZE,FONT_COLOR);
        ImageLosslessUtil.saveLosslessImage(image, targetPath, ImageType.IMAGE_TYPE_JPG);
        System.out.println("总耗时"+(System.currentTimeMillis()-startTime));
    }
}

原图

处理后的图片

图片灰度处理

public static void main(String[] args) throws ImageTypeException, Exception {
    String sourcePath = "原图本地路径";
    String targetPath = "新图保存的本地路径";
    String imageSuffix = "jpeg";//图片保存格式
    //图片灰度处理 推荐
    BufferedImage bufferedImage = ImageGrayUtil.grayImage3ByteBGR(sourcePath);
    //图片灰度处理 纯黑
    //BufferedImage bufferedImage = ImageGrayUtil.grayImageByteGRAY(sourcePath);
    //无压缩保存图片
    ImageLosslessUtil.saveLosslessImage(bufferedImage,targetPath,imageSuffix);
}

原图

处理后的图片 TYPE_BYTE_GRAY

处理后的图片 TYPE_3BYTE_BGR

百叶图

 

九宫格图

像素风原图

像素风处理后图

 源码地址:

imagetool: 🍬图片转字符图片工具类,支持 Gif 动画、图片合并、图片加水印、文字消除锯齿、图片无损保存、图片像素风、九宫格图、百叶图、修改图片DPI等图片处理其他工具类方法。详情请看README.md文件说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/560094.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多项式回归预测

目录 1、多项式回归 2、R-Squared 1、多项式回归 如果在实际中数据点显然不适合线性回归(穿过数据点之间的直线),那么多项式回归可能是理想的选择 像线性回归一样,多项式回归使用变量 x 和 y 之间的关系来找到绘制数据点线的最佳…

空气中的声压级、声功率级、声强级的区别

空气中的声压级、声功率级、的区别 在学习声学理论时,经常听到,声压级、声强级、声功率级的名称,经常也听到它们的单位为dB.但是它们是怎样的区别呢?下面介绍这几个名词 一、定义和计算 1.声压级 声压级以 L p {L_p} Lp​表示&am…

《Netty》从零开始学netty源码(六十一)之解码器

目录 解码器LineBasedFrameDecoderDelimiterBasedFrameDecoderFixedLengthFrameDecoderLengthFieldBasedFrameDecoder 解码器 在上一篇中介绍了Netty的解码器抽象类ByteToMessageDecoder,Netty也定义了一些常用的解码器,这些解码器都实现了ByteToMessag…

第一波IT去美国化的公司不是华为

第一波去美国化的不是华为,是BAT京东等 互联网类公司发起的工程叫:去IOE IBM小型机,ORACLE数据库,EMC存储 几年前已经完成了技术去美化 趣讲大白话:安全是底线 【趣讲信息科技174期】 **************************** 第…

hash在后端的应用

目录 散列表hash 函数种类: 布隆过滤器场景:构成原理应用分析选择 hash 函数问题:只用2GB内存在20亿个整数中找到出现次数最多的数完整代码: 分布式一致性 hashhash迁移hash 偏移虚拟节点 散列表 hash 函数 计算速度快 强随机分布…

Windows下搭建Tomcat HTTP服务,发布外网远程访问

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 转载自cpolar内网穿透的文章:外网访问本地Tomcat服务器【cpolar…

常见卫星图源下载教程

文章目录 一、引言二、在线地图源是简介三、常见地信软件如何浏览与下载图源?(1)QGIS(2)arcgis pro(3)arcgis 四、各个图源的具体下载方法(1)Google Earth1)qgis下载Google Earth2&a…

面对史上最难求职季,哪些测试技能更容易拿到offer?

在一线大厂,没有测试这个岗位,只有测开这个岗位。这几年,各互联网大厂技术高速更新迭代,软件测试行业也正处于转型期。传统的功能测试技术逐步淘汰,各种新的测试技术层出不穷,测试人员的薪资也水涨船高。与…

Java【问题 05】yml配置文件boolean一直为false问题分析解决

yml配置文件boolean一直为false 1.问题说明2.bug复现2.1 yml配置2.2 配置类2.3 测试类2.4 结果输出 3.源码分析3.1 Data3.2 Generate Getters and Setters 4.问题解决4.1 修改参数名称4.2 添加Getter和Setter方法 1.问题说明 application.yml配置文件里的布尔值获取后一直为fa…

MapReduce【自定义OutputFormat】

MapReduce默认的输出格式为TextOutputFormat,它的父类是FileOutputFormat,即按行来写,且内容写到一个文本文件中去,但是并不能满足我们实际开发中的所有需求,所以就需要我们自定义OutPutFormat。 自定义OutPutFormat 输出数据到…

Java 与排序算法(4):希尔排序

一、希尔排序 希尔排序(Shell Sort)是插入排序的改进版,由 Donald Shell 在 1959 年提出。希尔排序通过将待排序序列分成多个子序列,分别进行插入排序,最后再进行一次整体的插入排序,从而提高了排序效率。…

对于 CRC 校验的 学习笔记

参考资料 CRC校验原理及实现 - 知乎 (zhihu.com) <-- 这个讲的特别好&#xff0c;我的博客主要是抄他的&#xff0c;最后加了一点代码库的分析。 [CRC校验]手算与直观演示_哔哩哔哩_bilibili <-- 这个视频非常直观 【FPGA】CRC校验算法从数学原理到代码实现 CRC 参数…

一体集成的 API 调试工具,居然才听说?

在 Eolink ApiKit之前&#xff0c;定义 API 用 Swagger&#xff0c;生成文档用 YAPI&#xff0c;前端自测用 Mock&#xff0c;接口测试用 Postman&#xff0c;性能测试用 JMeter。 有了 Eolink ApiKit之 之后&#xff0c;Apikit Postman Swagger Mock JMeter&#xff0c;团…

办公室想装修?玻璃隔断让你的办公区域成为艺术品!

玻璃隔断是现代办公室装修中非常受欢迎的设计元素。它们不仅可以实现空间区分&#xff0c;还能为办公区带来现代感和艺术气息。 玻璃隔断的优点 1. 明亮&#xff1a;玻璃隔断可以让自然光线进入整个房间&#xff0c;使空间变得更加明亮&#xff0c;有益于工作效率和员工的情绪健…

Apikit 超强的接口管理神器

接口管理现状 一、常用解决方案 使用 Swagger 作为接口文档工具 使用 Postman 调试接口 使用 RAP Mock 数据 使用 JMeter 做接口自动化测试 二、存在的问题 维护不同工具之间数据一致性非常困难、非常低效。并且这里不仅仅是工作量的问题&#xff0c;更大的问题是多个系…

理解和使用pom.xml 及在idea中具体如何查看依赖冲突情况

pom基本配置说明&#xff0c;直接在下面菜鸟教程中就可以看到 Maven POM | 菜鸟教程 一、关闭父依赖约束 去掉这个模块&#xff0c;依赖约束就会失效&#xff0c;这样每个包之间的依赖冲突的可能性非常大。 <parent><groupId>org.springframework.boot</gr…

期末复习总结!!【MySQL】库和表的基本操作 + 增删改查CURD

文章目录 前言一、数据库的基本操作1, 查看库2, 创建库3, 使用库4, 删除库 二、表的基本操作1, 创建表2, 查看表3, 查看表结构4, 删除表 三、增加(Create)四、查询(Retrieve) (重点)1, 全列查询2, 指定列查询3, 查询字段为表达式4, 指定别名5, 去重6, 排序7, 条件查询7.1, 基本…

【考前熟悉】系统集成项目管理师-相关计算公式

前言 计算公式汇总&#xff1a;三点估算PERT、标准差、工作概率、预期收益EMV、加权算法、沟通渠道 净现值、进度网络、挣值分析、预测技术 文章目录 前言计算公式汇总1. 期望工期&#xff08;活动持续时间&#xff09;/三点估算PERT&#xff1a;&#xff08;最悲观日期 最乐观…

linux下安装vsftpd

安装vsftpd&#xff1a; 使用命令&#xff1a; apt-get install vsftpd 安装完后查看ftp服务的状态&#xff1a;service vsftpd status 或者 systemctl status vsftpd.service 开机启动ftp服务&#xff1a;systemctl enable vsftpd.service 配置vsftpd.conf 关于配置文件中…

SolVES 模型与多技术融合【QGIS、PostgreSQL、ARCGIS、MAXENT、R】实现生态系统服务功能社会价值评估

SolVES模型&#xff08;Social Values for Ecosystem Services&#xff09;全称为生态系统服务社会价值模型&#xff0c;是由美国地质勘探局和美国科罗拉多州立大学联合开发的一款地理信息系统应用程序&#xff0c;开发该模型的目的主要是对生态系统服务功能中的社会价值进行空…