package com.photomg.suolue;
import java.io.*;
import java.security.PublicKey;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;
import java.net.*;
import java.applet.*;
import java.sql.*;
/**
* Created by IntelliJ IDEA.
* User: Rain
* Date: 11-1-18
* Time: 下午4:21
* To change this template use File | Settings | File Templates.
*/
//縮略圖類(lèi)
//本java類(lèi)能將jpg圖片文件,進(jìn)行等比或非等比的大小轉(zhuǎn)換。
//具體使用方法
//s_pic大圖片路徑,生成小圖片路徑,大圖片文件名,生成小圖片文名,生成小圖片寬度,生成小圖片高度,是否等比縮放(默認(rèn)為true))
public class Deal {
??? String InputDir;//輸入圖路徑
??? String OutputDir;//輸出圖路徑
??? String InputFileName;//輸入圖文件名
??? String OutputFileName;//輸出圖文建平
??? int OutputWidth=80;//默認(rèn)輸出圖片寬度
??? int OutputHeight=80;//默認(rèn)輸出圖片高度
??? int rate=0;
??? boolean proportion=true;//是否進(jìn)行等比縮放標(biāo)記(默認(rèn)為等比縮放)
??? public Deal(){
??? }
??? public void setInputDir(String inputDir) {
??????? InputDir = inputDir;
??? }
??? public void setOutputDir(String outputDir) {
??????? OutputDir = outputDir;
??? }
??? public void setInputFileName(String inputFileName) {
??????? InputFileName = inputFileName;
??? }
??? public void setOutputFileName(String outputFileName) {
??????? OutputFileName = outputFileName;
??? }
??? public void setOutputWidth(int outputWidth) {
??????? OutputWidth = outputWidth;
??? }
??? public void setOutputHeight(int outputHeight) {
??????? this.OutputHeight = outputHeight;
??? }
??? public void setW_H(int width,int height){
??????? this.OutputHeight=height;
??????? this.OutputWidth=width;
??? }
??? public String s_pic(){
??????? BufferedImage image;
??????? String NewFileName;
??????? //建立輸出文件對(duì)象
??? File file=new File(OutputDir+OutputFileName);
??????? FileOutputStream tempout=null;
??????? try{
??????????? tempout=new FileOutputStream(file);
??????? }catch (Exception e){
??????????? System.out.println();e.toString();
??????? }
??????? Image img=null;
??????? Toolkit tk=Toolkit.getDefaultToolkit();
??????? Applet app=new Applet();
??????? MediaTracker mt=new MediaTracker(app);
??????? try{
??????????? img=tk.getImage(InputDir+InputFileName);
??????????? mt.addImage(img,0);
??????????? mt.waitForID(0);
??????? }catch (Exception e){
??????????? e.printStackTrace();
??????? }
??????? if(img.getWidth(null)==-1){
??????????? System.out.println("can't read,retry!"+"<BR>");
??????????? return "no";
??????? }else{
??????????? int new_w;
??????????? int new_h;
??????????? if(this.proportion==true){//判斷是否是等比縮放
??????????????? //為等比縮放計(jì)算輸出的圖片寬度及高度
??????????????? double rate1=((double)img.getWidth(null))/(double) OutputWidth+0.1;
??????????????? double rate2=((double) img.getHeight(null))/(double) OutputWidth+0.1;
??????????????? double rate=rate1>rate2?rate1:rate2;
??????????????? new_w=(int) (((double) img.getWidth(null))/rate);
??????????????? new_h=(int) (((double) img.getHeight(null))/rate);
??????????? }else{
??????????????? new_w=OutputWidth;//輸出的圖片寬度.
??????????????? new_h=OutputHeight;//輸出的額圖片高度.
??????????? }
??????????? BufferedImage buffImg=new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
??????????? Graphics g=buffImg.createGraphics();
??????????? g.setColor(Color.white);
??????????? g.fillRect(0,0,new_w,new_h);
??????????? g.drawImage(img,0,0,new_w,new_h,null);
??????????? g.dispose();
??????????? JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(tempout);
??????????? try{
??????????????? encoder.encode(buffImg);
??????????????? tempout.close();
??????????? }catch(IOException e){
??????????????? System.out.println(e.toString());
??????????? }
??????? }
??????? return "ok";
??? }
??? public String s_pic(String InputDir,String OutputDir,String InputFileName,String OutputFileName,int width,int height,boolean gp){
??????? //輸入圖路徑
??????? this.InputDir=InputDir;
??????? //輸出圖路徑
??????? this.OutputDir=OutputDir;
??????? //輸入圖文件名
??????? this.InputFileName=InputFileName;
??????? //輸出圖文件名
??????? this.OutputFileName=OutputFileName;
??????? //設(shè)置圖片長(zhǎng)度和寬度
??????? setW_H(width,height);
??????? //是否是等比縮放 標(biāo)記
??????? this.proportion=gp;
??????? return s_pic();
??? }
??? public static void main(String [] a){
??????? //s_pic(大圖片路徑,生成小圖片路徑,大圖片文件名,生成小圖片文件名,生成小圖片寬度,生成小圖片高度,是否等比縮放)
??????? Deal mypic=new Deal();
??????? System.out.println(
??????? mypic.s_pic("E:\\c寸\\pic\\","E:\\c寸\\pic\\","a.jpg","b.jpg",120,90,true));
??? }
}
公司老總:
劉總
import java.io.*;
import java.security.PublicKey;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;
import java.net.*;
import java.applet.*;
import java.sql.*;
/**
* Created by IntelliJ IDEA.
* User: Rain
* Date: 11-1-18
* Time: 下午4:21
* To change this template use File | Settings | File Templates.
*/
//縮略圖類(lèi)
//本java類(lèi)能將jpg圖片文件,進(jìn)行等比或非等比的大小轉(zhuǎn)換。
//具體使用方法
//s_pic大圖片路徑,生成小圖片路徑,大圖片文件名,生成小圖片文名,生成小圖片寬度,生成小圖片高度,是否等比縮放(默認(rèn)為true))
public class Deal {
??? String InputDir;//輸入圖路徑
??? String OutputDir;//輸出圖路徑
??? String InputFileName;//輸入圖文件名
??? String OutputFileName;//輸出圖文建平
??? int OutputWidth=80;//默認(rèn)輸出圖片寬度
??? int OutputHeight=80;//默認(rèn)輸出圖片高度
??? int rate=0;
??? boolean proportion=true;//是否進(jìn)行等比縮放標(biāo)記(默認(rèn)為等比縮放)
??? public Deal(){
??? }
??? public void setInputDir(String inputDir) {
??????? InputDir = inputDir;
??? }
??? public void setOutputDir(String outputDir) {
??????? OutputDir = outputDir;
??? }
??? public void setInputFileName(String inputFileName) {
??????? InputFileName = inputFileName;
??? }
??? public void setOutputFileName(String outputFileName) {
??????? OutputFileName = outputFileName;
??? }
??? public void setOutputWidth(int outputWidth) {
??????? OutputWidth = outputWidth;
??? }
??? public void setOutputHeight(int outputHeight) {
??????? this.OutputHeight = outputHeight;
??? }
??? public void setW_H(int width,int height){
??????? this.OutputHeight=height;
??????? this.OutputWidth=width;
??? }
??? public String s_pic(){
??????? BufferedImage image;
??????? String NewFileName;
??????? //建立輸出文件對(duì)象
??? File file=new File(OutputDir+OutputFileName);
??????? FileOutputStream tempout=null;
??????? try{
??????????? tempout=new FileOutputStream(file);
??????? }catch (Exception e){
??????????? System.out.println();e.toString();
??????? }
??????? Image img=null;
??????? Toolkit tk=Toolkit.getDefaultToolkit();
??????? Applet app=new Applet();
??????? MediaTracker mt=new MediaTracker(app);
??????? try{
??????????? img=tk.getImage(InputDir+InputFileName);
??????????? mt.addImage(img,0);
??????????? mt.waitForID(0);
??????? }catch (Exception e){
??????????? e.printStackTrace();
??????? }
??????? if(img.getWidth(null)==-1){
??????????? System.out.println("can't read,retry!"+"<BR>");
??????????? return "no";
??????? }else{
??????????? int new_w;
??????????? int new_h;
??????????? if(this.proportion==true){//判斷是否是等比縮放
??????????????? //為等比縮放計(jì)算輸出的圖片寬度及高度
??????????????? double rate1=((double)img.getWidth(null))/(double) OutputWidth+0.1;
??????????????? double rate2=((double) img.getHeight(null))/(double) OutputWidth+0.1;
??????????????? double rate=rate1>rate2?rate1:rate2;
??????????????? new_w=(int) (((double) img.getWidth(null))/rate);
??????????????? new_h=(int) (((double) img.getHeight(null))/rate);
??????????? }else{
??????????????? new_w=OutputWidth;//輸出的圖片寬度.
??????????????? new_h=OutputHeight;//輸出的額圖片高度.
??????????? }
??????????? BufferedImage buffImg=new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
??????????? Graphics g=buffImg.createGraphics();
??????????? g.setColor(Color.white);
??????????? g.fillRect(0,0,new_w,new_h);
??????????? g.drawImage(img,0,0,new_w,new_h,null);
??????????? g.dispose();
??????????? JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(tempout);
??????????? try{
??????????????? encoder.encode(buffImg);
??????????????? tempout.close();
??????????? }catch(IOException e){
??????????????? System.out.println(e.toString());
??????????? }
??????? }
??????? return "ok";
??? }
??? public String s_pic(String InputDir,String OutputDir,String InputFileName,String OutputFileName,int width,int height,boolean gp){
??????? //輸入圖路徑
??????? this.InputDir=InputDir;
??????? //輸出圖路徑
??????? this.OutputDir=OutputDir;
??????? //輸入圖文件名
??????? this.InputFileName=InputFileName;
??????? //輸出圖文件名
??????? this.OutputFileName=OutputFileName;
??????? //設(shè)置圖片長(zhǎng)度和寬度
??????? setW_H(width,height);
??????? //是否是等比縮放 標(biāo)記
??????? this.proportion=gp;
??????? return s_pic();
??? }
??? public static void main(String [] a){
??????? //s_pic(大圖片路徑,生成小圖片路徑,大圖片文件名,生成小圖片文件名,生成小圖片寬度,生成小圖片高度,是否等比縮放)
??????? Deal mypic=new Deal();
??????? System.out.println(
??????? mypic.s_pic("E:\\c寸\\pic\\","E:\\c寸\\pic\\","a.jpg","b.jpg",120,90,true));
??? }
}
公司老總:

劉總

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
