java swing图像放大、缩小、剪切
2012-07-27 12:54
1206 查看
先在D:盘准备好两张图片a.jpg 和 b.jpg
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageCut {
/**
* 缩放图像
*
* @param srcImageFile
* 源图像文件地址
* @param result
* 缩放后的图像地址
* @param scale
* 缩放比例
* @param flag
* 缩放选择:true 放大; false 缩小;
*/
public static void scale(String srcImageFile, String result, int scale,
boolean flag) {
try {
BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件
int width = src.getWidth(); // 得到源图宽
int height = src.getHeight(); // 得到源图长
if (flag) { // 放大
width = width * scale;
height = height * scale;
} else { // 缩小
width = width / scale;
height = height / scale;
}
Image image = src.getScaledInstance(width, height,
Image.SCALE_DEFAULT); // 返回图像的缩放版本。默认的图像缩放算法
BufferedImage tag = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB); // 预定义一个图像
Graphics g = tag.getGraphics(); // 返回Graphics,可用于绘制预定义的图像。
g.drawImage(image, 0, 0, null); // 用图像的缩放版本去绘制缩放后的图
g.dispose(); // 释放此图形的上下文以及它使用的所有系统资源。调用 dispose 之后,就不能再使用 Graphics
// 对象
ImageIO.write(tag, "JPEG", new File(result)); // 输出到文件流
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ImageCut.scale("D://a.jpg", "D://b.jpg", 4, false);
}
}
图形裁剪方法说明:
CropImageFilter 用于裁剪图像的 ImageFilter 类。此类扩展了基本 ImageFilter 类,可提取现有 Image 中的给定矩形区域,为包含刚提取区域的新图像提供源。也就是它要与 FilteredImageSource 对象结合使用,以生成现有图像的裁剪版本。
CropImageFilter cropFilter = new CropImageFilter(int x,int y ,int w,int h );//按指定 x、y、w 和 h 参数从源 Image 提取绝对矩形区域
Image image = Toolkit.getDefaultToolkit().createImage( new FilteredImageSource(image.getSource(), cropFilter));
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageCut {
/**
* 缩放图像
*
* @param srcImageFile
* 源图像文件地址
* @param result
* 缩放后的图像地址
* @param scale
* 缩放比例
* @param flag
* 缩放选择:true 放大; false 缩小;
*/
public static void scale(String srcImageFile, String result, int scale,
boolean flag) {
try {
BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件
int width = src.getWidth(); // 得到源图宽
int height = src.getHeight(); // 得到源图长
if (flag) { // 放大
width = width * scale;
height = height * scale;
} else { // 缩小
width = width / scale;
height = height / scale;
}
Image image = src.getScaledInstance(width, height,
Image.SCALE_DEFAULT); // 返回图像的缩放版本。默认的图像缩放算法
BufferedImage tag = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB); // 预定义一个图像
Graphics g = tag.getGraphics(); // 返回Graphics,可用于绘制预定义的图像。
g.drawImage(image, 0, 0, null); // 用图像的缩放版本去绘制缩放后的图
g.dispose(); // 释放此图形的上下文以及它使用的所有系统资源。调用 dispose 之后,就不能再使用 Graphics
// 对象
ImageIO.write(tag, "JPEG", new File(result)); // 输出到文件流
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ImageCut.scale("D://a.jpg", "D://b.jpg", 4, false);
}
}
图形裁剪方法说明:
CropImageFilter 用于裁剪图像的 ImageFilter 类。此类扩展了基本 ImageFilter 类,可提取现有 Image 中的给定矩形区域,为包含刚提取区域的新图像提供源。也就是它要与 FilteredImageSource 对象结合使用,以生成现有图像的裁剪版本。
CropImageFilter cropFilter = new CropImageFilter(int x,int y ,int w,int h );//按指定 x、y、w 和 h 参数从源 Image 提取绝对矩形区域
Image image = Toolkit.getDefaultToolkit().createImage( new FilteredImageSource(image.getSource(), cropFilter));
相关文章推荐
- java swing 显示pdf,带放大缩小及打印功能
- java 图像的放大与缩小
- 怎么在网页中通过JAVAscript控制SVG图像放大缩小
- 图像的放大与缩小(1)——等距采样法
- 图像的放大与缩小(MATLAB 代码)
- java对图片任意大小的缩小放大操作
- 图像的缩放(图像缩小和图像放大 旋转 倾斜)
- java 图片放大缩小
- JavaSwing图形界面编程之内存图像(一)
- C#中Bitmap类实现对图像操作的一些方法(Asp.net(C#)-放大缩小图片尺寸)
- Android两种不同的方法去实现图像的放大与缩小
- 写了一个实用的图像放大缩小程序,但是动画GIF转换后不会显示了,只有第一帧
- android图像绘制(二)画布上放大缩小问题
- libswscale图像格式转换与放大缩小
- 解决多指操作放大缩小 指针错误 java.lang.IllegalArgumentException: pointerIndex out of range
- java 图片放大缩小
- 图像的放大与缩小——双线性插值放大与均值缩小
- Halcon MFC混合编程-图像显示随鼠标滚动放大缩小
- 数字图像的放大和缩小
- 利用图像内插法放大缩小图像 Matlab