Java實(shí)現(xiàn)給網(wǎng)站上傳圖片蓋章的方法
本文實(shí)例講述了Java實(shí)現(xiàn)給網(wǎng)站上傳圖片蓋章的方法。分享給大家供大家參考。具體如下:
最近無(wú)聊,上了一會(huì)校友錄,覺(jué)的校友錄的圖片都會(huì)加入一個(gè)章,呵呵,自己也就做了一個(gè),不過(guò)只適合jpg格式。發(fā)出來(lái)給大家研究研究。歡迎討論!
很老的代碼了
/************************************************
* <p>java對(duì)圖片的操作(只能使用jpg)</p>
* 對(duì)圖片的簽章<br>
* 對(duì)圖片的縮圖<br>
* <p>Title:java對(duì)圖片的操作(只能使用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));
//得到輸入的編碼器,將文件流進(jìn)行jpg格式編碼
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
//得到編碼后的圖片對(duì)象
BufferedImage image = decoder.decodeAsBufferedImage();
Graphics g = image.getGraphics();
try {
InputStream imageIn2 = null;
imageIn2 = new FileInputStream(new File(toimagepth));
//得到輸入的編碼器,將文件流進(jìn)行jpg格式編碼
JPEGImageDecoder decoder2 = JPEGCodec
.createJPEGDecoder(imageIn2);
//得到編碼后的圖片對(duì)象
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) {
//打開(kāi)文件失敗,表示章圖片不存在,這時(shí)候直接加蓋文件章(簽名)
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) {
// 自動(dòng)生成 catch 塊
e.printStackTrace();
} catch (ImageFormatException e) {
// 自動(dòng)生成 catch 塊
e.printStackTrace();
} catch (IOException e) {
// 自動(dòng)生成 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) {
// 自動(dòng)生成 catch 塊
e.printStackTrace();
}
}
}
希望本文所述對(duì)大家的java程序設(shè)計(jì)有所幫助。
- JSP上傳圖片產(chǎn)生 java.io.IOException: Stream closed異常解決方法
- java實(shí)現(xiàn)上傳圖片進(jìn)行切割的方法
- java異步上傳圖片示例
- spring(java,js,html) 截圖上傳圖片實(shí)例詳解
- Java中上傳圖片壓縮處理的方法示例
- Java Servlet上傳圖片到指定文件夾并顯示圖片
- React+ajax+java實(shí)現(xiàn)上傳圖片并預(yù)覽功能
- java webApp異步上傳圖片實(shí)現(xiàn)代碼
- java實(shí)現(xiàn)上傳圖片并壓縮圖片大小功能
- 簡(jiǎn)單實(shí)現(xiàn)java上傳圖片文件功能
相關(guān)文章
詳解SpringBoot結(jié)合策略模式實(shí)戰(zhàn)套路
這篇文章主要介紹了詳解SpringBoot結(jié)合策略模式實(shí)戰(zhàn)套路,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Java中tomcat memecached session 共享同步問(wèn)題的解決辦法
這篇文章主要介紹了Java中tomcat memecached session 共享同步問(wèn)題的解決辦法的相關(guān)資料,需要的朋友可以參考下2015-10-10
java中PreparedStatement和Statement詳細(xì)講解
這篇文章主要介紹了java中PreparedStatement和Statement詳細(xì)講解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
mybatis-plus IdWorker生成的Id和返回給前臺(tái)的不一致的解決
這篇文章主要介紹了mybatis-plus IdWorker生成的Id和返回給前臺(tái)的不一致的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Java springboot接口迅速上手,帶你半小時(shí)極速入門(mén)
這篇文章主要給大家介紹了關(guān)于SpringBoot實(shí)現(xiàn)API接口的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-09-09
Spring框架 引入@Resource注解報(bào)空指針的解決
這篇文章主要介紹了Spring框架 引入@Resource注解報(bào)空指針的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
spring boot 防止重復(fù)提交實(shí)現(xiàn)方法詳解
這篇文章主要介紹了spring boot 防止重復(fù)提交實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了spring boot 防止重復(fù)提交具體配置、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下2019-11-11
Java如何利用Easyexcel動(dòng)態(tài)導(dǎo)出表頭列
這篇文章主要介紹了Java利用Easyexcel動(dòng)態(tài)導(dǎo)出表頭列的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
SpringBoot解決跨域請(qǐng)求攔截問(wèn)題代碼實(shí)例
這篇文章主要介紹了SpringBoot解決跨域請(qǐng)求攔截代碼實(shí)例,在微服務(wù)開(kāi)發(fā)中,一個(gè)系統(tǒng)包含多個(gè)微服務(wù),會(huì)存在跨域請(qǐng)求的場(chǎng)景。 本文講解SpringBoot解決跨域請(qǐng)求攔截的問(wèn)題。,需要的朋友可以參考下2019-06-06

