为上传到服务器的图片添加水印

来源:互联网 发布:淘宝保税区发货靠谱吗 编辑:程序博客网 时间:2024/05/17 09:09

小葵花课堂开奖啦,上传图片想带文字水印肿么办,看下方例子:

  • 嗯,是个栗子:

> 上传图片和加水印:

代码块

基于Spring,SpringMVC,Mybatis框架开发:
1.Controller:
@Controller
@RequestMapping(“/loading”)
public class Bannercontroller {
@Autowired
private BannerServie bs;
@RequestMapping(“/file”)
public String LoaderBanner(MultipartHttpServletRequest file,HttpServletRequest req){
List<~> list = file.getFiles(“file”);

    for (MultipartFile multipartFile : list) {        bs.addBanner(multipartFile,req);    }    return "/ok.jsp";}

}
2.Service

import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.RenderingHints;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.UUID;import javax.imageio.ImageIO;import javax.servlet.http.HttpServletRequest;import org.apache.commons.io.FilenameUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import org.springframework.web.multipart.MultipartFile;import com.apache.dao.BannerDao;import com.apache.entity.Banner;import com.baizhi.util.ImageRemarkUtil;@Service@Transactionalpublic class BannerServiceImp implements BannerServie{    @Autowired    private BannerDao bannerDao;    // 水印透明度    private static float alpha = 0.5f;    // 水印横向位置    private static int positionWidth = 100;    // 水印纵向位置    private static int positionHeight = 100;    // 水印文字字体    private static Font font = new Font("宋体", Font.BOLD, 72);    // 水印文字颜色    private static Color color = Color.red;    // 水印图片间隔    private static int interval = 0;    @Override    public void addBanner(MultipartFile file, HttpServletRequest req) {        //获取本项目的路径        String realpath= req.getSession().getServletContext().getRealPath("/");        //获取上级目录        String webapps = new File(realpath).getParent();        //创建上传的目录        File file2 = new File(webapps,"loadup");        //判断覅le是否存在 如果存在就创建新的文件路径        if(!file2.exists()){            file2.mkdir();        }        /**以上的方法是创建目录          * 修改文件名时间戳+ UUID+"."+后缀         */        //获取原来文件的名字        String file3 = file.getOriginalFilename();        //创建时间戳          String filename=new SimpleDateFormat("yyyyMMddHHmmssSS").format(new Date())        +UUID.randomUUID().toString().replace("-", "")+"."+FilenameUtils.getExtension(file3);        //上传文件状态 文件路径 id 放入数据库        File file4 = new File(file2,filename);        OutputStream os = null;        try {            file.transferTo(file4);            // 1、源图片            Image srcImg = ImageIO.read(file4);            BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),                    srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);            // 2、得到画笔对象            Graphics2D g = buffImg.createGraphics();            // 3、设置对线段的锯齿状边缘处理            g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,                    RenderingHints.VALUE_INTERPOLATION_BILINEAR);            g.drawImage(                    srcImg.getScaledInstance(srcImg.getWidth(null),                            srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0,                    null);            // 5、设置水印文字颜色            g.setColor(color);            // 6、设置水印文字Font            g.setFont(font);            // 7、设置水印文字透明度            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,                    alpha));            // 8、第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y)            g.drawString("版权所有,侵权必究", positionWidth, positionHeight);            // 9、释放资源            g.dispose();            // 10、生成图片            os = new FileOutputStream(file4);            ImageIO.write(buffImg, "JPG", os);            String netpath=req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()            +File.separator+"loadup"+File.separator+filename;            String id = UUID.randomUUID().toString().replace("-", "");            //调取方法那id netpath 入库            Banner banner = new Banner(id,"name",netpath,"1","1",new Date());            bannerDao.Uploaderpath(banner);        } catch (IllegalStateException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            try {                if (null != os)                    os.close();//关闭流            } catch (Exception e) {                e.printStackTrace();            }        }       }

重点内容

脚注

参考:http://blog.csdn.net/zengshunyao/article/details/44758297[^footnote].

流程图:

Created with Raphaël 2.1.0开始读取上传的图片加水印从哪来回哪儿去结束yesno
原创粉丝点击