我在java中调整图片大小时出现问题!
我从xml文档中获取图片,但大多数都处于横向模式! 我需要将它们调整大小/转换为纵向模式,以便它们适合我的GUI布局。
有没有这样做的方法?
答案 0 :(得分:1)
您可以使用相同的值缩放宽度和高度,以获得具有类似分辨率的图像。
但你真正的问题是什么?如何扩展或什么?
我根据目标宽度和高度
将高度和宽度的比例写成相同的值import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageTest {
public static BufferedImage resize(int targetWidth, int targetHeight,
BufferedImage src) {
double scaleW = (double) targetWidth / (double) src.getWidth() ;
double scaleH = (double) targetHeight / (double) src.getHeight() ;
double scale = scaleW < scaleH ? scaleW : scaleH;
BufferedImage result = new BufferedImage((int) (src.getWidth() * scale),
(int) (src.getHeight() * scale), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = result.createGraphics();
g2d.drawImage(src, 0, 0, result.getWidth(), result.getHeight(), null);
g2d.dispose();
return result;
}
public static void main(String[] args) throws IOException {
BufferedImage origin = ImageIO.read(new File(
"/home/marcos/icons/print.png"));
File dest = new File("/home/marcos/icons/print2.png");
dest.createNewFile();
ImageIO.write(resize(180, 200, origin), "PNG", dest);
}
}
答案 1 :(得分:0)
为了将图片从横向模式转换为纵向模式而不旋转,首先必须裁剪图片。然后,您可能需要缩小图片的大小。
假设你的风景画面是500 x 300像素,你想要你的人像照片是150 X 250像素。
您可以通过裁剪中心将风景图片裁剪为180 X 300像素。然后,您可以将裁剪的图片缩小到150 x 250像素。
以下是一些用于裁剪图像的Java代码:
int x = (videoWidth - imageWidth) / 2;
int y = (videoHeight - imageHeight) / 2;
CropImageFilter cropFilter = new CropImageFilter
(x, y, imageWidth, imageHeight);
Image croppedImage = toolkit.createImage(new FilteredImageSource
(image.getSource(), cropFilter));
image是一个java.awt.Image,而toolkit是默认的java.awt.Toolkit。