Java, изменение размера изображения - PullRequest
0 голосов
/ 15 марта 2011

У меня возникла проблема с изменением размера изображений в Java!

Я получаю фотографии из XML-документа, но большинство из них в альбомном режиме! мне нужно, чтобы они были изменены или преобразованы в портретный режим, чтобы они вписывались в мой графический интерфейс.

Есть ли способ сделать это ??

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Вы можете масштабировать ширину и высоту на одно и то же значение, чтобы получить изображение с аналогичным разрешением.

Но в чем проблема на самом деле?Как масштабировать или как?

Я написал это для масштаба высоты и ширины на одно и то же значение на основе ширины и высоты цели

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);
    }
}
0 голосов
/ 15 марта 2011

Чтобы преобразовать изображение из альбомного режима в портретный, без поворота, сначала необходимо обрезать изображение. Тогда вам, возможно, придется уменьшить размер изображения.

Допустим, ваша пейзажная картинка имеет размер 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, а инструментарий - это java.awt.Toolkit по умолчанию.

...