java图片缩放

Python020

java图片缩放,第1张

根据你的鼠标移动事件,判断你第一次点击的点和最后一次的点,就可以算出这个句型区域的长和宽了,

下面代码自己看

package com.itheima.util

import java.awt.Image

import java.awt.image.BufferedImage

import java.io.File

import java.io.FileOutputStream

import java.io.IOException

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

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

/**

* 制作图片缩略图

*

* @author seawind

*

*/

public class PicUtils {

private String srcFile

private String destFile

private int width

private int height

private Image img

/**

* 构造函数

*

* @param fileName

*String

* @throws IOException

*/

public PicUtils(String fileName) throws IOException {

File _file = new File(fileName)// 读入文件

this.srcFile = fileName

// 查找最后一个.

int index = this.srcFile.lastIndexOf(".")

String ext = this.srcFile.substring(index)

this.destFile = this.srcFile.substring(0, index) + "_s" + ext

img = javax.imageio.ImageIO.read(_file)// 构造Image对象

width = img.getWidth(null)// 得到源图宽

height = img.getHeight(null)// 得到源图长

}

/**

* 强制压缩/放大图片到固定的大小

*

* @param w

*int 新宽度

* @param h

*int 新高度

* @throws IOException

*/

public void resize(int w, int h) throws IOException {

BufferedImage _image = new BufferedImage(w, h,

BufferedImage.TYPE_INT_RGB)

_image.getGraphics().drawImage(img, 0, 0, w, h, null)// 绘制缩小后的图

FileOutputStream out = new FileOutputStream(destFile)// 输出到文件流

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out)

encoder.encode(_image)// 近JPEG编码

out.close()

}

/**

* 按照固定的比例缩放图片

*

* @param t

*double 比例

* @throws IOException

*/

public void resize(double t) throws IOException {

int w = (int) (width * t)

int h = (int) (height * t)

resize(w, h)

}

/**

* 以宽度为基准,等比例放缩图片

*

* @param w

*int 新宽度

* @throws IOException

*/

public void resizeByWidth(int w) throws IOException {

int h = (int) (height * w / width)

resize(w, h)

}

/**

* 以高度为基准,等比例缩放图片

*

* @param h

*int 新高度

* @throws IOException

*/

public void resizeByHeight(int h) throws IOException {

int w = (int) (width * h / height)

resize(w, h)

}

/**

* 按照最大高度限制,生成最大的等比例缩略图

*

* @param w

*int 最大宽度

* @param h

*int 最大高度

* @throws IOException

*/

public void resizeFix(int w, int h) throws IOException {

if (width / height >w / h) {

resizeByWidth(w)

} else {

resizeByHeight(h)

}

}

/**

* 设置目标文件名 setDestFile

*

* @param fileName

*String 文件名字符串

*/

public void setDestFile(String fileName) throws Exception {

if (!fileName.endsWith(".jpg")) {

throw new Exception("Dest File Must end with \".jpg\".")

}

destFile = fileName

}

/**

* 获取目标文件名 getDestFile

*/

public String getDestFile() {

return destFile

}

/**

* 获取图片原始宽度 getSrcWidth

*/

public int getSrcWidth() {

return width

}

/**

* 获取图片原始高度 getSrcHeight

*/

public int getSrcHeight() {

return height

}

}

在 g.drawImage(img,0,0, newW,newH,null)加上一句:

g.scale( newW*1.0/img.getWidth(), newH*1.0/img.getHeight())

另:在return img前要 g.dispose()