欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-05 20:54:49
本文实例讲述了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程序设计有所帮助。