如何用java为文件生成缩略图

Python023

如何用java为文件生成缩略图,第1张

public static boolean scale(String imagepath,String newpath){

// 返回一个 BufferedImage,作为使用从当前已注册 ImageReader 中自动选择的 ImageReader 解码所提供 File 的结果

BufferedImage image=null

try {

image = ImageIO.read(new File(imagepath))

} catch (IOException e) {

System.out.println("读取图片文件出错!"+e.getMessage())

return false

}

// Image Itemp = image.getScaledInstance(300, 300, image.SCALE_SMOOTH)

double Ratio = 0.0

if ((image.getHeight() >300) ||(image.getWidth() >300)) {

if (image.getHeight() >image.getWidth())

//图片要缩放的比例

Ratio = 300.0 / image.getHeight()

else

Ratio = 300.0 / image.getWidth()

}

// 根据仿射转换和插值类型构造一个 AffineTransformOp。

AffineTransformOp op = new AffineTransformOp(AffineTransform

.getScaleInstance(Ratio, Ratio), null)

// 转换源 BufferedImage 并将结果存储在目标 BufferedImage 中。

image = op.filter(image,null)

//image.getScaledInstance(300,300,image.SCALE_SMOOTH)

FileOutputStream out=null

try {

out = new FileOutputStream(newpath)

ImageIO.write((BufferedImage)image,"bmp",out)

out.close()

} catch (Exception e) {

System.out.println("写图片文件出错!!"+e.getMessage())

return false

}

return true

}

package com.hoo.util

 

import java.awt.Image

import java.awt.image.BufferedImage

import java.io.File

import java.io.FileOutputStream

import java.io.IOException

import java.net.MalformedURLException

import java.net.URL

import javax.imageio.ImageIO

import com.sun.image.codec.jpeg.ImageFormatException

import com.sun.image.codec.jpeg.JPEGCodec

import com.sun.image.codec.jpeg.JPEGEncodeParam

import com.sun.image.codec.jpeg.JPEGImageEncoder

 

/**

 * <b>function:</b> 缩放图片工具类,创建缩略图、伸缩图片比例

 * @author hoojo

 * @createDate 2012-2-3 上午10:08:47

 * @file ScaleImageUtils.java

 * @package com.hoo.util

 * @version 1.0

 */

public abstract class ScaleImageUtils {

 

    private static final float DEFAULT_SCALE_QUALITY = 1f

    private static final String DEFAULT_IMAGE_FORMAT = ".jpg" // 图像文件的格式 

    private static final String DEFAULT_FILE_PATH = "C:/temp-"

    

    /**

     * <b>function:</b> 设置图片压缩质量枚举类;

     * Some guidelines: 0.75 high quality、0.5  medium quality、0.25 low quality

     * @author hoojo

     * @createDate 2012-2-7 上午11:31:45

     * @file ScaleImageUtils.java

     * @package com.hoo.util

     * @project JQueryMobile

     * @version 1.0

     */

    public enum ImageQuality {

        max(1.0f), high(0.75f), medium(0.5f), low(0.25f)

        

        private Float quality

        public Float getQuality() {

            return this.quality

        }

        ImageQuality(Float quality) {

            this.quality = quality

        }

    }

    

    private static Image image

    

    /**

     * <b>function:</b> 通过目标对象的大小和标准(指定)大小计算出图片缩小的比例

     * @author hoojo

     * @createDate 2012-2-6 下午04:41:48

     * @param targetWidth 目标的宽度

     * @param targetHeight 目标的高度

     * @param standardWidth 标准(指定)宽度

     * @param standardHeight 标准(指定)高度

     * @return 最小的合适比例

     */

    public static double getScaling(double targetWidth, double targetHeight, double standardWidth, double standardHeight) {

        double widthScaling = 0d

        double heightScaling = 0d

        if (targetWidth > standardWidth) {

            widthScaling = standardWidth / (targetWidth * 1.00d)

        } else {

            widthScaling = 1d

        }

        if (targetHeight > standardHeight) {

            heightScaling = standardHeight / (targetHeight * 1.00d)

        } else {

            heightScaling = 1d

        }

        return Math.min(widthScaling, heightScaling)

    }