0

ソース画像からターゲット画像にサイズを変更する必要があります。これは、次のコードを使用してすでに行ったことです。

public static BufferedImage getScaledSampledFilteredImage(
            BufferedImage img, int targetWidth, int targetHeight,
            boolean higherQuality) {

        ResampleOp resampleOp = new ResampleOp(targetWidth, targetHeight);
        resampleOp.setUnsharpenMask(AdvancedResizeOp.UnsharpenMask.VerySharp);
        resampleOp.setUnsharpenMask(AdvancedResizeOp.UnsharpenMask.Soft);
        BufferedImage rescaledImage = resampleOp.filter(img, null);

        return rescaledImage;
    }

そして私は使用しています

画像スケーリングライブラリ

しかし、ここでわかるように、実線ではなく破線が表示されます。

誰かが私に私の目標を達成する方法を教えてもらえますか?

ありがとうMihirParekh

元の画像

ターゲット画像

4

3 に答える 3

0

これらのいずれかを試してください。必要に応じて、ニーズに合わせて微調整します。

public static Image getScaled(final Image img, final int w, final int h) {
    return img.getScaledInstance(w, h, java.awt.Image.SCALE_SMOOTH);
}

public static BufferedImage getScaled(final BufferedImage img, final int w, final int h) {
    final Image image = img.getScaledInstance(w, h, java.awt.Image.SCALE_SMOOTH);
    final BufferedImage bufferedImage = new BufferedImage(w, h, img.getType());
    bufferedImage.getGraphics().drawImage(image, 0, 0, null);
    return bufferedImage;
}
于 2013-03-15T04:20:48.500 に答える
0

アンチエイリアシングを設定する必要があります。

clearBuffer = new BufferedImage(img.getWidth(null),
                            img.getHeight(null), BufferedImage.TYPE_INT_RGB);
            Graphics2D graphics = clearBuffer.createGraphics();
            graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                RenderingHints.VALUE_INTERPOLATION_BICUBIC);
            graphics.setRenderingHint(RenderingHints.KEY_RENDERING,
                RenderingHints.VALUE_RENDER_QUALITY);
            graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
            graphics.drawImage(img, 0, 0, null);
于 2013-03-14T16:50:27.570 に答える
0

これがあなたに役立つかどうかはわかりませんが、画像を再スケーリングしたいときにこの関数を使用しています:

public BufferedImage scaleImage(int WIDTH, int HEIGHT, String filename) {
        BufferedImage bi = null;
        try {
            ImageIcon ii = new ImageIcon(filename);//path to image
            bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
            Graphics2D g2d = (Graphics2D) bi.createGraphics();
            g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
            g2d.drawImage(ii.getImage(), 0, 0, WIDTH, HEIGHT, null);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return bi;
    }

これがあなたを助けることを願っています

于 2013-03-14T17:00:46.550 に答える