<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-200  評(píng)論-148  文章-15  trackbacks-0
    方法1:[第一種方法比后一種生成的縮略圖要清晰]
    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.awt.image.ColorModel;
    import java.awt.image.WritableRaster;
    import java.awt.*;
    import java.awt.geom.AffineTransform;
    import java.io.InputStream;
    import java.io.File;
    import java.io.FileOutputStream;

    public class Test {
    ?public static BufferedImage resize(BufferedImage source, int targetW, int targetH) {
    ?// targetW,targetH分別表示目標(biāo)長和寬
    ?int type = source.getType();
    ?BufferedImage target = null;
    ?double sx = (double) targetW / source.getWidth();
    ?double sy = (double) targetH / source.getHeight();
    ?//這里想實(shí)現(xiàn)在targetW,targetH范圍內(nèi)實(shí)現(xiàn)等比縮放。如果不需要等比縮放
    ?//則將下面的if else語句注釋即可
    ?if(sx>sy)
    ?{
    ?sx = sy;
    ?targetW = (int)(sx * source.getWidth());
    ?}else{
    ?sy = sx;
    ?targetH = (int)(sy * source.getHeight());
    ?}
    ?if (type == BufferedImage.TYPE_CUSTOM) { //handmade
    ?ColorModel cm = source.getColorModel();
    ?WritableRaster raster = cm.createCompatibleWritableRaster(targetW, targetH);
    ?boolean alphaPremultiplied = cm.isAlphaPremultiplied();
    ?target = new BufferedImage(cm, raster, alphaPremultiplied, null);
    ?} else
    ?target = new BufferedImage(targetW, targetH, type);
    ?Graphics2D g = target.createGraphics();
    ?//smoother than exlax:
    ?g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY );
    ?g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
    ?g.dispose();
    ?return target;
    ?}
    ?public static void saveImageAsJpg (String fromFileStr,String saveToFileStr,int width,int hight)
    ?throws Exception {
    ?BufferedImage srcImage;
    // String ex = fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());
    ?String imgType = "JPEG";
    ?if (fromFileStr.toLowerCase().endsWith(".png")) {
    ?imgType = "PNG";
    ?}
    // System.out.println(ex);
    ?File saveFile=new File(saveToFileStr);
    ?File fromFile=new File(fromFileStr);
    ?srcImage = ImageIO.read(fromFile);
    ?if(width > 0 || hight > 0)
    ?{
    ?srcImage = resize(srcImage, width, hight);
    ?}
    ?ImageIO.write(srcImage, imgType, saveFile);

    ?}
    ?
    ?public static void main (String argv[]) {
    ?try{
    ?//參數(shù)1(from),參數(shù)2(to),參數(shù)3(寬),參數(shù)4(高)
    ?Test.saveImageAsJpg("E:/Document/My Pictures/3.gif","c:/6.gif",50,50);
    ?} catch(Exception e)
    ?{
    ?e.printStackTrace();
    ?}

    ?}
    }

    方法2:
    ?import java.io.*;
    ?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.*;

    //縮略圖類,
    //本java類能將jpg圖片文件,進(jìn)行等比或非等比的大小轉(zhuǎn)換。
    //具體使用方法
    //s_pic(大圖片路徑,生成小圖片路徑,大圖片文件名,生成小圖片文名,生成小圖片寬度,生成小圖片高度,是否等比縮放(默認(rèn)為true))
    ?public class Tes {
    ?String InputDir; //輸入圖路徑
    ?String OutputDir; //輸出圖路徑
    ?String InputFileName; //輸入圖文件名
    ?String OutputFileName; //輸出圖文件名
    ?int OutputWidth = 80; //默認(rèn)輸出圖片寬
    ?int OutputHeight = 80; //默認(rèn)輸出圖片高
    ?int rate = 0;
    ?boolean proportion = true; //是否等比縮放標(biāo)記(默認(rèn)為等比縮放)

    ?public Tes() {
    //初始化變量
    ?InputDir = "";
    ?OutputDir = "";
    ?InputFileName = "";
    ?OutputFileName = "";
    ?OutputWidth = 80;
    ?OutputHeight = 80;
    ?rate = 0;
    ?}

    ?public void setInputDir(String InputDir) {
    ?this.InputDir = InputDir;
    ?}

    ?public void setOutputDir(String OutputDir) {
    ?this.OutputDir = OutputDir;
    ?}

    ?public void setInputFileName(String InputFileName) {
    ?this.InputFileName = InputFileName;
    ?}

    ?public void setOutputFileName(String OutputFileName) {
    ?this.OutputFileName = OutputFileName;
    ?}

    ?public void setOutputWidth(int OutputWidth) {
    ?this.OutputWidth = OutputWidth;
    ?}

    ?public void setOutputHeight(int OutputHeight) {
    ?this.OutputHeight = OutputHeight;
    ?}

    ?public void setW_H(int width, int height) {
    ?this.OutputWidth = width;
    ?this.OutputHeight = height;
    ?}

    ?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 ex) {
    ?System.out.println(ex.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) OutputHeight + 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 ex) {
    ?System.out.println(ex.toString());
    ?}
    ?}
    ?return "ok";
    ?}

    ?public String s_pic(String InputDir, String OutputDir, String InputFileName,
    ?String OutputFileName) {
    //輸入圖路徑
    ?this.InputDir = InputDir;
    //輸出圖路徑
    ?this.OutputDir = OutputDir;
    //輸入圖文件名
    ?this.InputFileName = InputFileName;
    //輸出圖文件名
    ?this.OutputFileName = OutputFileName;
    ?return s_pic();
    ?}

    ?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è)置圖片長寬
    ?setW_H(width, height);
    //是否是等比縮放 標(biāo)記
    ?this.proportion = gp;
    ?return s_pic();
    ?}

    ?public static void main(String[] a) {
    //s_pic(大圖片路徑,生成小圖片路徑,大圖片文件名,生成小圖片文名,生成小圖片寬度,生成小圖片高度)
    ?Tes mypic = new Tes();
    ?System.out.println(
    ?mypic.s_pic("E:\\Document\\My Pictures\\",
    ?"E:\\Document\\My Pictures\\",
    ?"topbg-3.gif", "3.gif", 400, 400, true)
    ?);

    ?}
    ?}

    3.jsp方式
    java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,

    ??try
    ????{
    ?java.io.File file = new java.io.File("E:\\Document\\My Pictures\\3.gif");
    ?String newurl="E:\\Document\\My Pictures\\32.gif"; //新的縮略圖保存地址
    ?Image src = javax.imageio.ImageIO.read(file); //構(gòu)造Image對(duì)象
    ?float tagsize=200;
    ?int old_w=src.getWidth(null); //得到源圖寬
    ?int old_h=src.getHeight(null);
    ?int new_w=0;
    ?int new_h=0; //得到源圖長
    ?int tempsize;
    ?float tempdouble;
    ?if(old_w>old_h){
    ?tempdouble=old_w/tagsize;
    ?}else{
    ?tempdouble=old_h/tagsize;
    ?}
    ?new_w=Math.round(old_w/tempdouble);
    ?new_h=Math.round(old_h/tempdouble);//計(jì)算新圖長寬
    ?BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
    ?tag.getGraphics().drawImage(src,0,0,new_w,new_h,null); //繪制縮小后的圖
    ?FileOutputStream newimage=new FileOutputStream(newurl); //輸出到文件流
    ?JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
    ?encoder.encode(tag); //近JPEG編碼
    ?newimage.close();

    }catch (Exception e){

    e.toString();

    }
    posted on 2008-06-16 13:04 無聲 閱讀(1841) 評(píng)論(0)  編輯  收藏 所屬分類: 職場生活
    主站蜘蛛池模板: 亚洲AV午夜成人影院老师机影院| 亚洲综合色一区二区三区| 亚洲毛片在线免费观看| 亚洲精品无码专区久久| 亚洲午夜未满十八勿入网站2| 国产大片免费网站不卡美女| 精品久久亚洲一级α| 亚洲午夜久久久精品影院| 男女啪啪永久免费观看网站| 精品国产污污免费网站| 亚洲成AV人片在WWW| 亚洲三级电影网站| 免费人成年激情视频在线观看 | 亚洲毛片基地日韩毛片基地 | 亚洲国产综合精品| 亚洲国产精品无码久久九九| 美女内射毛片在线看免费人动物| 午夜不卡AV免费| 亚洲综合小说另类图片动图| 国产亚洲一区二区手机在线观看 | 99视频精品全部免费观看| 久久亚洲精品高潮综合色a片| 亚洲第一中文字幕| 亚洲午夜日韩高清一区| 成人免费视频网址| 国产成人精品免费视频大| 中国毛片免费观看| 日韩在线视精品在亚洲| 久久亚洲最大成人网4438| 亚洲国产精品国自产电影| 亚洲综合色成在线播放| 国产免费爽爽视频免费可以看| 99久久免费国产香蕉麻豆| 日韩精品免费在线视频| 国产成人高清精品免费观看| 美女扒开尿口给男人爽免费视频| 33333在线亚洲| 亚洲国产成AV人天堂无码| 亚洲一二成人精品区| 亚洲人成人一区二区三区| 亚洲无码高清在线观看|