关于图像处理的问题? 用java如何实现图像的缩放,旋转?最好给个代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 关于缩放,不是很难的,说说原理吧其实也就是怎么显示的问题,或者说是显示的尺寸比例问题。所以在java中的jlabel上显示之前先把读进去的imageicon按比例icon = new ImageIcon(icon.getImage().getScaledInstance(“参数”),参数就是用来定义你的显示图形的尺寸的 import java.awt.geom.AffineTransform; AffineTransform t = new AffineTransform() ;t.rotate(double d) ;这个类里面一进提供了基本上所有的关于图像平移,旋转,缩放等功能,自己看看去 /** * 缩放 - 参数指定目标图缩放比例。 * @param srcImage BufferedImage * @param xscale float * @param yscale float * @param hints RenderingHints * @return BufferedImage */ public static BufferedImage scaleJ2D(BufferedImage srcImage, double xscale, double yscale, RenderingHints hints) { int width = (int) ((double) srcImage.getWidth() * xscale); int height = (int) ((double) srcImage.getHeight() * yscale); AffineTransform affineTransform = new AffineTransform(); affineTransform.scale(xscale, yscale); AffineTransformOp affineTransformOp = new AffineTransformOp( affineTransform, hints); BufferedImage dstImage = new BufferedImage(width, height, srcImage.getType()); return affineTransformOp.filter(srcImage, dstImage); } public static final int J2D_ROTATE_90 = 90; public static final int J2D_ROTATE_180 = 180; public static final int J2D_ROTATE_270 = 270; /** * 旋转 - 参数指定目标图旋转角度。 * @param bufferedImage BufferedImage * @param radian int * @param hints RenderingHints * @return BufferedImage */ public static BufferedImage rotateJ2D(BufferedImage bufferedImage, int radian, RenderingHints hints) { int width = bufferedImage.getWidth(); int height = bufferedImage.getHeight(); BufferedImage dstImage = null; AffineTransform affineTransform = new AffineTransform(); if (radian == 180) { affineTransform.translate(width, height); dstImage = new BufferedImage(width, height, bufferedImage.getType()); } else if (radian == 90) { affineTransform.translate(height, 0); dstImage = new BufferedImage(height, width, bufferedImage.getType()); } else if (radian == 270) { affineTransform.translate(0, width); dstImage = new BufferedImage(height, width, bufferedImage.getType()); } affineTransform.rotate(Math.toRadians(radian)); AffineTransformOp affineTransformOp = new AffineTransformOp( affineTransform, hints); return affineTransformOp.filter(bufferedImage, dstImage); } java网络编程高手请进!为什么用java获取到的网卡的名称是乱码?我改了字符编码还是乱码,有什么办法可以解决吗? 如何获得文件名(不要后缀)? 问个基本的问题【菜鸟】 牛人教你怎麽学java!! 硬件方面的疑问 inter-procedural variation是什么意思啊? 在一个textField内输入值另一个textField值实时改变 在JAVA中如何使用数据结构 **超级简单问题**请问java如何定义数组? 有关电子邮箱的问题 二叉树层序遍历的问题? 实现java.io.Externalizable接口系列化String数组的问题
其实也就是怎么显示的问题,或者说是显示的尺寸比例问题。
所以在java中的jlabel上显示之前先把读进去的imageicon按比例
icon = new ImageIcon(icon.getImage().getScaledInstance(“参数”),参数就是用来定义你的显示图形的尺寸的
AffineTransform t = new AffineTransform() ;
t.rotate(double d) ;这个类里面一进提供了基本上所有的关于图像平移,旋转,缩放等功能,自己看看去
* 缩放 - 参数指定目标图缩放比例。
* @param srcImage BufferedImage
* @param xscale float
* @param yscale float
* @param hints RenderingHints
* @return BufferedImage
*/
public static BufferedImage scaleJ2D(BufferedImage srcImage,
double xscale,
double yscale,
RenderingHints hints) {
int width = (int) ((double) srcImage.getWidth() * xscale);
int height = (int) ((double) srcImage.getHeight() * yscale); AffineTransform affineTransform = new AffineTransform();
affineTransform.scale(xscale, yscale);
AffineTransformOp affineTransformOp = new AffineTransformOp(
affineTransform,
hints); BufferedImage dstImage = new BufferedImage(width, height,
srcImage.getType()); return affineTransformOp.filter(srcImage, dstImage);
}
public static final int J2D_ROTATE_180 = 180;
public static final int J2D_ROTATE_270 = 270;
/**
* 旋转 - 参数指定目标图旋转角度。
* @param bufferedImage BufferedImage
* @param radian int
* @param hints RenderingHints
* @return BufferedImage
*/
public static BufferedImage rotateJ2D(BufferedImage bufferedImage,
int radian,
RenderingHints hints) {
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight(); BufferedImage dstImage = null;
AffineTransform affineTransform = new AffineTransform(); if (radian == 180) {
affineTransform.translate(width, height);
dstImage = new BufferedImage(width, height, bufferedImage.getType());
} else if (radian == 90) {
affineTransform.translate(height, 0);
dstImage = new BufferedImage(height, width, bufferedImage.getType());
} else if (radian == 270) {
affineTransform.translate(0, width);
dstImage = new BufferedImage(height, width, bufferedImage.getType());
} affineTransform.rotate(Math.toRadians(radian));
AffineTransformOp affineTransformOp = new AffineTransformOp(
affineTransform,
hints); return affineTransformOp.filter(bufferedImage, dstImage);
}