//这个代码网上很常见,不过我找到的都是加一行的。修改后自动换行,见方法list2()

package cloud.com;

import javax.imageio.ImageIO;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.net.URL;

import java.util.ArrayList;

import java.util.List;

public class ImageT {

private Font font = new Font("", Font.PLAIN, 20);// 添加字体的属性设置

private Graphics2D g = null;

private int fontsize = 0;

private int x = 0;

private int y = 0;

/**

* 修改图片,返回修改后的图片缓冲区

*/

public BufferedImage modifyImage(BufferedImage img, String content, int x,

int y) {

try {

int w = img.getWidth();

int h = img.getHeight();

g = img.createGraphics();

g.setBackground(Color.WHITE);

g.setColor(Color.RED);

if (this.font != null)

g.setFont(this.font);

// 验证输出位置的纵坐标和横坐标

if (x >= h || y >= w) {

this.x = h - this.fontsize + 2;

this.y = w;

} else {

this.x = x;

this.y = y;

}

List ls = list2(content,w-this.x,this.fontsize);

for(int i=0;i

g.drawString(ls.get(i), this.x, this.y);

this.y+=30;

}

g.dispose();

} catch (Exception e) {

System.out.println(e.getMessage());

}

return img;

}

/**

* 把字符串分行

* @param content

* @param maxLength 一行长度#像素

* @param fontSzie 字体大小

* @return List

*/

public List list2(String text,int maxLength,int fontSzie){

int length = 0;

int lengthcl=maxLength/fontSzie;

List list = new ArrayList();

StringBuffer sb = new StringBuffer();

for (int i = 0; i

if (new String(text.charAt(i) + "").getBytes().length > 1) {

length += 2;

} else {

length += 1;

}

if((length+1)/2<=lengthcl){

sb.append(text.charAt(i));

}else{

i--;

length=0;

list.add(sb.toString());

sb= new StringBuffer();

}

}

return list;

}

public BufferedImage modifyImagetogeter(BufferedImage b, BufferedImage d) {

try {

int w = b.getWidth();

int h = b.getHeight();

g = d.createGraphics();

g.drawImage(b, 100, 10, w, h, null);

g.dispose();

} catch (Exception e) {

System.out.println(e.getMessage());

}

return d;

}

public static void main(String[] args) {

ImageT tt = new ImageT();

String str = "一个初创却无可ssd限量的团队:我们有来自于fff五百强企业的技术we宅男,有来自于知名房企的品牌经理,有来自于广告行业的资深销售。我们为同一个目标凝聚,励志做一个互联网时代企业革新的引导者,好伙伴。 ";

BufferedImage d = tt.loadImageLocal("e:\\IMG_0201.JPG");

tt.setFont("楷体", 30);

tt.writeImageLocal("e:\\cc.jpg",tt.modifyImage(d,str,410,40));

System.out.println("success");

}

/**

* 导入本地图片到缓冲区

*/

public BufferedImage loadImageLocal(String imgName) {

try {

return ImageIO.read(new File(imgName));

} catch (IOException e) {

System.out.println(e.getMessage());

}

return null;

}

/**

* 导入网络图片到缓冲区

*/

public BufferedImage loadImageUrl(String imgName) {

try {

URL url = new URL(imgName);

return ImageIO.read(url);

} catch (IOException e) {

System.out.println(e.getMessage());

}

return null;

}

/**

* 生成新图片到本地

*/

public void writeImageLocal(String newImage, BufferedImage img) {

if (newImage != null && img != null) {

try {

File outputfile = new File(newImage);

ImageIO.write(img, "jpg", outputfile);

} catch (IOException e) {

System.out.println(e.getMessage());

}

}

}

/**

* 设置文字字体

*/

public void setFont(String fontStyle, int fontSize) {

this.fontsize = fontSize;

this.font = new Font(fontStyle, Font.PLAIN, fontSize);

}

}

java 图片写字_用java在图片上写字相关推荐

  1. java 图片效果_使用Java进行图片底片化效果处理

    使用java代码读取图片,并进行底片化处理 util importjava.awt.image.BufferedImage;importjava.io.File;importjava.util.Arr ...

  2. java获取网络图片_做个看图片的App玩玩_第一篇

    目标 做个看图片的App,效果图如下: 本期目标 功能: 1.下载一组图片,支持上下滑动翻页 涉及技术知识点: 1. retrofit+okHttp:访问网络接口获取数据 2. coroutines: ...

  3. java图片叠加_[原创]JAVA中图片上叠加文字的方法

    --sunfruit JDK:1.3.x以上 功能:下面是一个简单在图片上面叠加文字的方法,有朋友如果有这方面的问题,就起个了解的作用 代码如下: import java.io.IOException ...

  4. java 图片 大小_在JAVA中调整图片大小

    在JAVA中,当我们调整图片的大小或比例时,我们可以按照以下的步棸: 通过调用的ImageIO类的read(File)方法 创建用于输入图片BufferedImage对象. 按所需输出高度输出的Buf ...

  5. java 图片切割_使用Java实现图像分割

    为减少动画制作过程中的IO操作,我们可以使用连续动画来改善动画播放效率. 如果我们对图像中的每张小图像单独分割成独立的文件,那么当每次要使用这些小图像的时候,我们都得从文件中读取图像信息. 实际上我们 ...

  6. java改变图片颜色_使用java代码实现证件照换背景色

    思路:我们知道,每张图片都是由众多的像素点组成,那么我们是不是就可以根据像素点的范围来修改这个图片的像素点的颜色,进而就可以达到修改证件照背景颜色的效果啦!我们可以配合取色器获取颜色的rgb,并修改为 ...

  7. java swing 图片显示_在Java Swing中显示图像

    你有一个非常令人困惑的程序结构让你自己变得困难,我建议你简化很多事情. 首先,您当前的MinesweeperMenu类不需要扩展MinesweeperPanel,后者类也不需要扩展JFrame.然后你 ...

  8. java 图片生成器_用Java来显示图片生成器

    一.本图片生成器具有以下功能特性: 1.可以设置图片的宽度.高度.外框颜色.背景色: 2.可以设置图片字体的大小.名称.颜色: 3.可以设置输出图片的格式,如JPEG.GIF等: 4.可以将图片存储到 ...

  9. java 防篡改_用JAVA写一个简易图片防篡改

    图片防止篡改部分 第一步,获取图片的md5字符串,并转为字节数组 //将图片使用md5加密 private static byte[] img2Md5Bytes(File file,String sa ...

最新文章

  1. SaltStack实战之配置管理-Jinja2模板
  2. 腾讯云yum操作实现CentOS 7.6 64位Linux系统图形界面的安装和vnc的搭建
  3. 神舟六号的投入产出比:1比12
  4. vs2019 更新安装错误_本月Windows 10累积更新再出BUG:安装时跳出错误代码
  5. [CQOI2018] 解锁屏幕(状压dp)
  6. mac下eclipse启动时间插件开发
  7. 用truffle部署智能合约到以太坊网络(truffle+infura)的简易方法
  8. 【caffe-windows】 caffe-master 之 matlab接口配置
  9. 香港设计师带来仿生机器人,其身体 70% 构造均由3D打印完成
  10. Flume案例之采集特定目录的数据到HDFS
  11. 音视频处理、图像处理、图像识别和字符识别全能库JavaCV完整教程(包含完整JavaCV入门、JavaCV实战、ffmpeg、opencv和tesserac教程)
  12. Macbook pro (m1)突然没有办法按住shift打出大写R
  13. 一百个你不应该继续用Dev C++的理由
  14. android 免费云测平台,免费的移动APP真机云测试平台|iTestin云测工具 v3.0.8
  15. HDOJ HDU Today 2112【最短路Dijkstra+字符串处理】
  16. 期刊论文发表的字数是怎么计算的
  17. 单相干式变压器红外图像数据集
  18. 编译原理实验报告一:PL0语言编译器分析(PL0,词法分析,语法分析,中间代码生成)
  19. WINCE注册表编辑器
  20. 软件开发相关的读书笔记 问题与方法

热门文章

  1. 【 随笔 】 为什么要写技术文章
  2. 微软 Microsoft
  3. 【SVM时序预测】基于粒子群算法优化支持向量机PSO-SVM实现期贷时序数据预测附matlab代码
  4. 软考中级网络工程师必背考试知识点集锦(三)
  5. mysql权威指南 代码_mysql权威指南学习札记
  6. 双面女间谍第一至五季/全集Alias迅雷下载
  7. 专访宜信AI中台团队负责人王东:智慧金融时代,大数据和AI如何为业务赋能
  8. VREP(Coppeliarobotics)仿真介绍
  9. mac 开启终端代理
  10. LBS预案作战指挥系统应用