java自动生成图片

Java代码实现自动生成产品标签图片(升级版) 上次写过一次Java代码实现自动生成产品标签图片的案例,今天工作中又用到了,再来补充一下。 要求,生成的标签戴上logo标志,也就是加上图片;直接上代码: public static void createQrCode2(String fileName, Device device) throws WriterException, IOException{ fileName=StatusDefine.filePath+fileName; //判断路径是否存在,如果不存在就创 阅读详情

 


  在Web应用中,经常需要动态生成图片,比如实时股市行情,各种统计图等等,这种情况下,图片只能在服务器内存中动态生成并发送给用户,然后在浏览器中显示出来。

  本质上,浏览器向服务器请求静态图片如jpeg时,服务器返回的仍然是标准的http响应,只不过http头的contentType不是text/html,而是image/jpeg而已,因此,我们在Servlet中只要设置好contentType,然后发送图像的数据流,浏览器就能正确解析并显示出图片。

  在Java中,java.awt和java.awt.image包提供了基本的绘制图像的能力,我们可以在内存中绘制好需要的图形,然后编码成jpeg或其他图像格式,最后发送相应给浏览器即可。下面是使用Servlet动态创建图像的详细步骤:

  1.创建BufferedImage对象,该对象存在内存中,负责保存绘制的图像;

  2.创建Graphics2D对象,该对象负责绘制所需的图像;

  3.当绘制完成后,调用com.sun.image.codec.jpeg包的JPEG编码器对其编码;

  4.最后将编码后的数据输出至HttpResponse即可。

  注意com.sun.image.codec.jpeg包位于JDK目录的rt.jar包中,它不是公开的API,需要将rt.jar复制到web应用程序的WEB-INF/lib下。

  我们先创建一个最简单的Servlet:

public class CreateImageServlet extends HttpServlet {
 protected void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException
 {
  response.setContentType("image/jpeg");
 }
}


  我们首先设置了response的contentType为image/jpeg,这样浏览器就可以正确识别。
  然后,创建一个大小为100x100的BufferedImage对象,准备绘图:

int width = 100;
int height = 100;
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);


  接着,BufferedImage对象中获取Graphics2D对象并绘图:

Graphics2D g = bi.createGraphics(); // 创建Graphics2D对象
// 填充背景为白色:
g.setBackground(Color.BLUE);
g.clearRect(0, 0, width, height);
// 设置前景色:
g.setColor(Color.RED);
// 开始绘图:
g.drawLine(0, 0, 99, 99); // 绘制一条直线
// 绘图完成,释放资源:
g.dispose();
bi.flush();


  然后,对BufferedImage进行JPEG编码:

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
param.setQuality(, false);
encoder.setJPEGEncodeParam(param);
try {
 encoder.encode(bi);
}
catch(IOException ioe) {
 ioe.printStackTrace();
}


  编码后的JPEG图像直接输出到了out对象中,我们只要传入response. getOutputStream()就可以直接输出到HttpResponse中。

  下面是完整的代码:

package com.crackj2ee.web.util;

import java.io.*;
import java.awt.*;
import java.awt.image.*;

import javax.servlet.*;
import javax.servlet.http.*;

import com.sun.image.codec.jpeg.*;

/**
* @author Liao Xue Feng
*/
public class CreateImageServlet extends HttpServlet {

 protected void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException
 {
  response.setContentType("image/jpeg");
  createImage(response.getOutputStream());
 }

 private void createImage(OutputStream out) {
  int width = 100;
  int height = 100;
  BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  Graphics2D g = bi.createGraphics();
  // set background:
  g.setBackground(Color.BLUE);
  g.clearRect(0, 0, width, height);
  // set fore color:
  g.setColor(Color.RED);
  // start draw:
  g.drawLine(0, 0, 99, 199);
  // end draw:
  g.dispose();
  bi.flush();
  // encode:
  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
  JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
  param.setQuality(, false);
  encoder.setJPEGEncodeParam(param);
  try {
   encoder.encode(bi);
  }
  catch(IOException ioe) {
   ioe.printStackTrace();
  }

 }
}


  最后将这个Servlet编译,注册到web.xml中,映射路径为/CreateImage,写一个简单的index.html测试:

<html><head></head>
<body>
<img src="CreateImage">
</body></html>


  如能正确显示,大功告成!

import java.io.*;

import java.util.*;

import com.sun.image.codec.jpeg.*;

import java.awt.image.*;

import java.awt.*;

public class GenGif {

BufferedImage image;

// 创建 jpg 文件到指定路径下

public void createJpg(String path) {

  try {

   FileOutputStream fos = new FileOutputStream(path);

   BufferedOutputStream bos = new BufferedOutputStream(fos);

   JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);

   encoder.encode(image);

   bos.close();

  } catch(FileNotFoundException fnfe) {

   System.out.println(fnfe);

  } catch(IOException ioe) {

   System.out.println(ioe);

  }

}

public static void main(String[] args) {

  int width=400, height=300;

  int xLength=300, yLength=150;

  int count=5;

  

  Vector data=new Vector();

  data.addElement(new Integer(100));

  data.addElement(new Integer(120));

  data.addElement(new Integer(150));

  data.addElement(new Integer(40));

  data.addElement(new Integer(5));

  

  GenGif jg = new GenGif();

  jg.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

  Graphics g = jg.image.getGraphics();

  

  // 画坐标

  g.setColor(Color.white);

  g.fillRect(0, 0, width, height);

  g.setColor(Color.blue);

  g.drawLine(10,height-10,10,height-10-yLength);

  g.drawLine(10,height-10,10+xLength,height-10);

  // 连线

  int yTo;

  int yFrom = ((Integer)(data.elementAt(0))).intValue();

  for (int i=1; i<count; i++) {

   yTo=((Integer)(data.elementAt(i))).intValue();

   g.drawLine(10+i*xLength/count,height-10,10+i*xLength/count,height-15);

   g.drawLine(10+(i-1)*xLength/count,yFrom,10+i*xLength/count,yTo);

   yFrom=yTo;

  }

  

  jg.createJpg("c:/aaa.jpg");

}

}


注意红色标注部分:

JDK1.7及以上时,API内部类com.sun.image.codec.jpeg.JPEGImageEncoder类及所属包不能再被引用,使用标准JDK编译将不通过,改用如下类:javax.imageio.ImageIO类同样可以传递图片流

        try {
            ImageIO.write(bi, "JPEG", outputStream);
            outputStream.flush();
            outputStream.close();
        }  catch (IOException e) {
            e.printStackTrace();
        }

Java代码实现自动生成产品标签图片 今天任务遇到一个需求,要求生成一个产品的标签图片,包含产品的信息和二维码,贴在产品设备上,可以通过扫描二维码获取产品的相信信息,我这里展示一个domo public void test1() throws FileNotFoundException, IOException, WriterException { int width = 430; // 图片宽 int height... 阅读详情

相关推荐

java动态生成图片 并把当前时间写在图片上

NULL 博文链接:https://won6won.iteye.com/blog/1110384

使用Java Servlet动态生成图片

  在Web应用中,经常需要动态生成图片,比如实时股市行情,各种统计图等等,这种情况下,图片只能在服务器内存中动态生成并发送给用户,然后在浏览器中显示出来。   本质上,浏览器向服务器请求静态图片如jpeg时,服务器返回的仍然是标准的http响应,只不过http头的contentType不是text/html,而是image/jpeg而已,因此,我们在Servlet中只要设置好contentTyp

键者天行 6044

巨量千川M-API实战:5分钟搞定短视频计划数据自动获取(Python版)

本文详细介绍了如何利用巨量千川M-API和Python快速搭建自动化工具,实现短视频计划数据的自动获取。通过实战代码演示了从环境准备、Token管理到核心数据接口调用的完整流程,帮助电商运营和技术开发者告别手动导出,高效完成数据汇总与分析。

weixin_29325515的博客 1357

如何使用 ChatGPT/open ai 接口 进行图片生成(绘画、图片创作)

本文介绍了如何使用chatgpt进行绘画,通过输入一句话,生成一张图片。

samur2的博客 2万+

运放偏置电路设计:如何精准计算差分放大器的电压偏移量

本文深入解析了差分放大器偏置电路的设计原理与精准计算方法,重点阐述了如何通过引入参考电压实现信号电压偏移,以适应单电源ADC的输入范围。文章结合实战案例,详细推导了偏移电压公式,并强调了电阻匹配、运放选型及PCB布局对精度和共模抑制比的关键影响,帮助硬件工程师避免常见设计陷阱。

weixin_29288313的博客 634

在QTableWidget中添加支持多选的QComboBox并显示

定义自定义表格项,主要用于显示复选框自定义的多选ComboBox类自定义委托类,用于表格中的多选ComboBox代码展示如下。

YUyang0304的博客 2782

使用Java生成图片——功能强大的图形工具

Java是一种广泛使用的编程语言,它具有强大的功能和卓越的性能,可以用来创建各种类型的应用程序,包括生成图像。在Java中,可以使用Java的内置类库和第三方库来生成图片。下面是一篇关于Java生成图片的介绍文章。

李白的粉的博客 7554

电路课设-音响分频器电路设计

(一)题目简介 1.一阶分频器电路设计 假定高音和低音扬声器均等效为 16 欧姆电阻,设计如图 2 的简单分频器电 路,要求高低频分界(两个滤波器的截止频率)为 5kHz。 1) 写出高音扬声器和低音扬声器电压对于 vs 的传递函数,确定电路中电 容 C 和电感 L 的元件值;2)利用 AC 频率扫描分析求出两个扬声器电压的频率响应曲线,验证计算 结果。用包含高低频成分的电压 vs 激励进行测量验证。 3)计算并利用 EWB 仿真证明从 vs 看进去的阻抗为一常数 16 欧姆。

weixin_53507617的博客 1万+

使用JAVA Servlet生成图片

 在Web应用中,经常需要动态生成图片,比如实时股市行情,各种统计图等等,这种情况下,图片只能在服务器内存中动态生成并发送给用户,然后在浏览器中显示出来。本质上,浏览器向服务器请求静态图片如JPEG时,服务器返回的仍然是标准的http响应,只不过http头的contentType不是text/html,而是image/jpeg而已,因此,我们在Servlet中只要设置好contentTyp

穷人飞扬的专栏 1109

34、木材在家具制造中的应用

本文详细探讨了木材在家具制造中的应用,从木材的选择、加工技术到设计创新和表面处理等方面进行了全面解析,并结合实际案例分析木材家具的市场趋势与未来发展。文章强调了木材家具在功能性、智能化和环保性方面的潜力,展示了其在现代家居生活中的重要地位。

flink9streamer的博客 242

生成式AI;语义通信技术;生成式AI辅助的云边协同算法及其可解释性

生成式AI 语义通信技术 生成式AI辅助的云边协同算法及其可解释性 一、端到端设计的物理层内生智能 二、生成式语义通信 三、生成式数字孪生网络 四、生成式AI辅助的云边协同算法及其可解释性 五、未来可能的研究方向

ZhangJiqun&191cm&85kg 426

java 常用API (Image)

RGB RGB色彩模式 RGB color mode 是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一。 每像素颜色 16777216(256 * 256 * 256)种 因此这红色绿色蓝色又称为三原色光,用英文表示就是R(red)、G(green)、B(blue)。 在电脑中,RGB的所谓“多少”就是指亮度,并使用整数来表示。通常情况下,RGB

chinusyan的专栏 2055

基于应用谱减法进行语音去噪的算法

在上述代码中首先通过读取语音信号和噪声信号,将两个信号都转换为频域信号,然后计算出语音信号在各频率下的功率谱和噪声信号在各频率下的功率谱,并基于此计算信噪比,接着根据信噪比计算出阈值,并将低于阈值的能量对应的频段进行清零操作,最终实现去噪处理,最后将处理后的信号转换回时域信号。该算法采用谱减法进行降噪处理,能有效地去除语音信号中的噪声,但是在实际应用中,该方法也存在一些问题,如会对语音信号的高频部分产生影响,所以需要在应用过程中进行适当的调整。

weixin_50547796的博客 192

Java使用FreeMarker自动生成Word文档(带图片和表单)

Java使用FreeMarker自动生成Word文档(带图片和表单)1 背景2 目标效果3 创建Word模板3.1 创建模板文档3.2 转换模板文档3.3 处理模板文档中的占位符3.4 处理模板文档中的图片3.5 处理模板文档中的表单3.6 重命名模板文档4 创建Java程序4.1 版本说明4.2 创建项目5 测试5.1 准备5.2 生成Word文档6 踩坑6.1 特殊符号6.2 换行符6.3 内...

Java大数据联盟 3万+

MATLAB和S7-1200PLC水箱液位高度PID控制联合仿真(KEPserverOPC通信应用)

SMART PLC 向导PID的详细介绍请查看下面文章链接:S7-200 SMART PLC PID向导详细介绍(如何实现P、PD、PID控制器)-优快云博客文章浏览阅读1k次。这篇博客主要介绍SMART PLC PID向导的使用,PID控制相关的其它内容请查看专栏系列文章,常用链接如下:SMART PLC PID负压控制(过程量为负数)_负压控制pid控制程序_RXXW_Dor的博客-优快云博客1、如何实现PID反作用调节?S7-1200PLC和KEPserver OPC通信-优快云博客。

RXXW_Dor的博客 1781

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Java 自动生成缩略图片

一、自动生成缩略图方法: package writeimg; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; im

caoyuan10036的专栏 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java 自动生成抽象的图片

下载链接:https://pan.baidu.com/s/1PnhjScVj57vv99l5CMp70Q 运行后自动生成抽象的图片,一次生成六张。 效果大致如下图 这次做的是图片生成,以后会持续更新。以后想做游戏开发。希望能用上自动生成的技术。源码有点混乱,希望交流的可以联系。 ...

weixin_44273469的博客 670

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java 自动生成验证码图片

package com.web.framework.slms.module.login.code; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import java.util.Random; public class VerifyCode { private int width = 90; private int heigh

weixin_44005694的博客 2171

java生成带文字的图片_Java在背景图片上面加文字或者文字自动生成图片

正巧遇到一个项目需要图片合成,查阅了网上许多资料之后整理了一份生成图片的工具类,代码如下:package org.yygzs.acker.util;import java.io.IOException;import javax.imageio.ImageIO;import java.io.File;import java.awt.Font;import java.awt.Graphics2D;im...

weixin_39864738的博客 1670

Java后台自动生成图片验证码功能

=================================================begin package com.***.***.common.random;   import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.Buffe...

java学习之简单开发快乐学习 496

【java图片处理】java 在模版图片上加文字 、c#自动生成缩略图、自动生成带文字和图片的水印图...

java 在模版图片上加文字 c#自动生成缩略图、自动生成带文字和图片的水印图 java 在模版图片上加文字 c#自动生成缩略图、自动生成带文字和图片的水印图 php生成小图加文字 java 在模版 图片 上加文字 http://okone96.itpub.net/post/9033/228826 签名的可以写一个java类,用一个透明的底图再把文字写在图片上面(可以设置字体的样式...

muchao119的专栏 323

批量上传图片,产品ID自动生成

本人提供用java实现:批量上传图片(整个文件夹图片一次上传),产品ID自动生成 

ccchenzhong1984的专栏 729

Java使用FreeMarker自动生成word文档(可遍历生成多张图片)

Java使用FreeMarker自动生成word文档(可遍历生成多张图片) 前言:最近项目中后台需要自动生成word文档,我以前也没做过,就百度了下,发现还是用freemarker生成word文档最快,但是试了网上的一些方法,都没成功,最后参考着多篇文章慢慢摸索最终成功了。在这记录一下。 需要实现的效果图 首先,导入Jar包依赖 <dependency> <groupId>org.freemarker</groupId> <artifactId

qq_41850239的博客 1496

Java使用FreeMarker自动生成Word文档(带图片和表单)亲测实用

参考地址:Java使用FreeMarker自动生成Word文档(带图片和表单)_JavaBigData1024的博客-优快云博客_freemarker生成word文档

qq_38097573的博客 4099

java第八次作业:课堂上发布的前5张图片(包括匿名对象、单例模式恶汉式、自动生成对象、args[]数组使用、静态关键字)

Advancing Swift 的博客 173
上一篇: JAVA中AWT基本组件及其使用方法(一)
下一篇: 重装mysql并使用旧数据
johnsearcher
博客等级 码龄17年 12粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值