Java实现给网站上传图片盖章的方法

 更新时间:2015年07月24日 12:54:44   作者:罪恶的花生  
这篇文章主要介绍了Java实现给网站上传图片盖章的方法,涉及java针对图片的合成操作技巧,类似水印功能,需要的朋友可以参考下

本文实例讲述了Java实现给网站上传图片盖章的方法。分享给大家供大家参考。具体如下:

最近无聊,上了一会校友录,觉的校友录的图片都会加入一个章,呵呵,自己也就做了一个,不过只适合jpg格式。发出来给大家研究研究。欢迎讨论!
很老的代码了

/************************************************
* <p>java对图片的操作(只能使用jpg)</p>
* 对图片的签章<br>
* 对图片的缩图<br>
* <p>Title:java对图片的操作(只能使用jpg)</p>
* <p>CreateData: 2004-12-2</p>
* <p>Description:</p>
* <p>Copyright: Copyright (c) 2004</p>
* @author 王凯
* @version 1.0
***********************************************/
package com.cn.wangk.test;
import java.io.*;
import com.sun.image.codec.jpeg.*;//sun公司仅提供了jpg图片文件的编码api
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import javax.imageio.ImageIO;
/**
* @author wangkai
*/
public class Test {
  /**
   * 
   */
  public Test() {
    try {
      //生成以后新的图片地址
      File fo = new File("c:\\4.jpg");
      //读取的图片文件
      String imagePath = "C:\\Documents and Settings\\Administrator"
          + "\\My Documents\\My Pictures\\1.jpg";
      //盖章的图片文件
      String toimagepth = "C:\\1.jpg";
      //得到图片的文件流
      InputStream imageIn;
      imageIn = new FileInputStream(new File(imagePath));
      //得到输入的编码器,将文件流进行jpg格式编码
      JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
      //得到编码后的图片对象
      BufferedImage image = decoder.decodeAsBufferedImage();
      Graphics g = image.getGraphics();
      try {
        InputStream imageIn2 = null;
        imageIn2 = new FileInputStream(new File(toimagepth));
        //得到输入的编码器,将文件流进行jpg格式编码
        JPEGImageDecoder decoder2 = JPEGCodec
            .createJPEGDecoder(imageIn2);
        //得到编码后的图片对象
        BufferedImage image2 = decoder2.decodeAsBufferedImage();
        //加盖图片章
        ImageObserver obser = null;
        int x = image.getWidth() - image2.getWidth();
        int y = image.getHeight() - image2.getHeight();
        g.drawImage(image2, x, y, obser);
      } catch (FileNotFoundException e) {
        //打开文件失败,表示章图片不存在,这时候直接加盖文件章(签名)
        g.setFont(new Font("宋体", Font.PLAIN, 18));
        g.drawString("秋水工作室", image.getWidth() - 100,
            image.getHeight() - 20);
        g.drawString("water_wang@xs.zj.cn", image.getWidth() - 180,
            image.getHeight() - 10);
      }
      g.dispose();
      ImageIO.write(image, "jpeg", fo);
      System.out.println("ok");
    } catch (FileNotFoundException e) {
      // 自动生成 catch 块
      e.printStackTrace();
    } catch (ImageFormatException e) {
      // 自动生成 catch 块
      e.printStackTrace();
    } catch (IOException e) {
      // 自动生成 catch 块
      e.printStackTrace();
    }
  }
  public static void saveFixedBoundIcon(File imageFile, int height, int width)
      throws Exception {
    double Ratio = 0.0;
    if (imageFile == null || !imageFile.isFile())
      throw new Exception(imageFile + "找不到指定的文件!");
    String filePath = imageFile.getPath();
    BufferedImage Bi = ImageIO.read(imageFile);
    if ((Bi.getHeight() > height) || (Bi.getWidth() > width)) {
      if (Bi.getHeight() > Bi.getWidth()) {
        Ratio = (new Integer(height)).doubleValue() / Bi.getHeight();
      } else {
        Ratio = (new Integer(width)).doubleValue() / Bi.getWidth();
      }
      File savefile = new File(filePath + "_" + height + "_" + width
          + ".jpg");
      Image Itemp = Bi.getScaledInstance(width, height,
          Image.SCALE_SMOOTH);
      AffineTransformOp op = new AffineTransformOp(AffineTransform
          .getScaleInstance(Ratio, Ratio), null);
      Itemp = op.filter(Bi, null);
      try {
        ImageIO.write((BufferedImage) Itemp, "jpeg", savefile);
      } catch (Exception ex) {
      }
    }
  }
  public static void main(String[] args) {
    //    Test ts = new Test();
    try {
      Test.saveFixedBoundIcon(new File(
          "C:\\test.jpg"), 200, 200);
    } catch (Exception e) {
      // 自动生成 catch 块
      e.printStackTrace();
    }
  }
}

希望本文所述对大家的java程序设计有所帮助。

相关文章

  • 源码解析Spring 数据库异常抽理知识点总结

    源码解析Spring 数据库异常抽理知识点总结

    在本篇文章里小编给大家分享了关于源码解析Spring 数据库异常抽理知识点内容,对此有需要的朋友们学习参考下。
    2019-05-05
  • Eclipse配置maven环境的图文教程

    Eclipse配置maven环境的图文教程

    下面小编就为大家带来一篇Eclipse配置maven环境的图文教程。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • JAVA生成短8位UUID的实例讲解

    JAVA生成短8位UUID的实例讲解

    这篇文章主要介绍了JAVA生成短8位UUID的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Java设计模式之观察者模式(Observer模式)

    Java设计模式之观察者模式(Observer模式)

    这篇文章主要介绍了Java设计模式之观察者模式(Observer模式),文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • 解决SpringSecurity 一直登录失败的问题

    解决SpringSecurity 一直登录失败的问题

    这篇文章主要介绍了解决SpringSecurity 一直登录失败的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 详解Java编程中throw和throws子句的使用方法

    详解Java编程中throw和throws子句的使用方法

    这篇文章主要介绍了详解Java编程中throw和throws子句的使用方法,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • SpringBoot Shiro 权限注解不起作用的解决方法

    SpringBoot Shiro 权限注解不起作用的解决方法

    本文主要介绍了SpringBoot Shiro 权限注解不起作用的解决方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Java继承的问题引导和测试代码

    Java继承的问题引导和测试代码

    这篇文章主要介绍了Java继承的问题引导和测试代码,涉及继承的概念,合成的语法等相关内容,具有一定借鉴价值,需要的朋友可以参考下。
    2021-08-08
  • Java Socket实现聊天室附1500行源代码

    Java Socket实现聊天室附1500行源代码

    Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。本篇文章手把手带你通过Java Socket来实现自己的聊天室,大家可以在过程中查缺补漏,温故而知新
    2021-10-10
  • Java实现视频自定义裁剪功能

    Java实现视频自定义裁剪功能

    这篇文章主要介绍了如何通过java实现视频裁剪,可以将视频按照自定义尺寸进行裁剪,文中的示例代码简洁易懂,感兴趣的可以了解一下
    2022-01-01

最新评论