jsp或servlet生成或修改图片

博客给出了使用JSP生成和修改图片的代码示例。生成图片部分设置了图片大小、背景色等,向图片画线并写入文字;修改图片部分读入文件,对图片进行缩小处理,添加文字信息,最后将处理后的图片输出到响应流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生成图片:
createCode.jsp
-----------------------
<%@ page contentType="image/jpeg"
         import="java.io.IOException,javax.imageio.ImageIO,java.awt.*,java.awt.image.BufferedImage,java.util.Random,com.sun.image.codec.jpeg.*" %>
         
<%
    //设置页面不缓存
    response.setHeader("Pragma", "No-cache";
    response.setHeader("Cache-Control", "no-cache";
    response.setDateHeader("Expires", 0);
    
    //设置图片大小         
    int width = 100;   int height = 100;
    //初始化内存中的图片
    BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    //获得图片的上下文
    Graphics2D g = bi.createGraphics();
//设置图片背景色
    g.setBackground( new Color(200,250,200));
    //画图片的边框
    g.clearRect(0, 0, width, height);
//设置画笔的颜色
    g.setColor(Color.RED);
//向图片画一条线
g.drawLine(0, 0, 99, 199);
    g.drawString("hehe",10,10);
//结束图片
    g.dispose();
    //获得图片
    bi.flush();

    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
    JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
    param.setQuality(1.0f, false);
    encoder.setJPEGEncodeParam(param);
    //把图片写到response输出流 
    try {
      encoder.encode(bi);
    }
    catch(IOException ioe) {
      ioe.printStackTrace();
    }
%>
-------------------------------------------
<%@page language="java" contentType="text/html; charset=GBK"%>


<img src="createCode.jsp">


===============================================================================
以下是修改图片:
<%@page language="java" contentType="text/html; charset=GBK"%>


<img src="modifyJpeg.jsp">


--------------------------

modifyJpeg.jsp:
<%@ page contentType="image/jpeg"
         import="java.io.IOException,javax.imageio.ImageIO,java.awt.*,java.awt.image.BufferedImage,java.util.Random,com.sun.image.codec.jpeg.*" %>
<%@ page import="java.io.*"%>         
<%
try{
    //设置页面不缓存
    response.setHeader("Pragma", "No-cache";
    response.setHeader("Cache-Control", "no-cache";
    response.setDateHeader("Expires", 0);
    //读入文件
    File _file = new File("D:/project/testCopy/sintal/test/JavaCreateJpeg/biao.jpg"
    //构造Image对象
    Image src = javax.imageio.ImageIO.read(_file);                     
    //得到源图宽
    int wideth=src.getWidth(null);                                     
    //得到源图长
    int height=src.getHeight(null);                                    
    //获得内存
    BufferedImage tag = new BufferedImage(wideth/2,height/2,BufferedImage.TYPE_INT_RGB);
    //得到图片上下文
Graphics2D g = tag.createGraphics();
//设置图片背景色
    g.setBackground( new Color(200,250,200  ;
    //画图片的边框使用背景色
    g.clearRect(0, 0, wideth, height);
//设置画笔的颜色
    g.setColor(Color.RED);
    //向图片画另一个图片上去
    g.drawImage(src,0,0,wideth/2,height/2,null);       //绘制缩小后的图
    for( int i=10 ; i<wideth; i+=200 {
     for( int j=10 ;j<height;j+=100){
     g.drawString("("+i+" , "+j +"", i , j ;
     }
    }
//向图片画一条线
//g.drawLine(0, 0, 99, 199);
//结束图片
    g.dispose();
    tag.flush();
    //FileOutputStream out=new FileOutputStream("newfile.jpg"; 如果想生成新的文件需要定义out
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());       
    encoder.encode(tag);                                               //近JPEG编码
    }catch(Exception e){
     e.printStackTrace();
    }
    //如果生成新文件还需要out.close();
%>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值