天天看點

Java中Image的水準翻轉、縮放與自由旋轉操作

老生常談了,直接看代碼。

bufferedimage.getColorModel().getTransparency()以獲得原始圖檔透明度用于生成緩存圖,在緩存圖進行相應操作即可。

Java中Image的水準翻轉、縮放與自由旋轉操作

/**

Java中Image的水準翻轉、縮放與自由旋轉操作

     * 旋轉圖檔為指定角度

Java中Image的水準翻轉、縮放與自由旋轉操作

     * 

Java中Image的水準翻轉、縮放與自由旋轉操作

     * @param bufferedimage

Java中Image的水準翻轉、縮放與自由旋轉操作

     *            目标圖像

Java中Image的水準翻轉、縮放與自由旋轉操作

     * @param degree

Java中Image的水準翻轉、縮放與自由旋轉操作

     *            旋轉角度

Java中Image的水準翻轉、縮放與自由旋轉操作

     * @return

Java中Image的水準翻轉、縮放與自由旋轉操作

     */

Java中Image的水準翻轉、縮放與自由旋轉操作

    public static BufferedImage rotateImage(final BufferedImage bufferedimage,

Java中Image的水準翻轉、縮放與自由旋轉操作

            final int degree) {

Java中Image的水準翻轉、縮放與自由旋轉操作

        int w = bufferedimage.getWidth();

Java中Image的水準翻轉、縮放與自由旋轉操作

        int h = bufferedimage.getHeight();

Java中Image的水準翻轉、縮放與自由旋轉操作

        int type = bufferedimage.getColorModel().getTransparency();

Java中Image的水準翻轉、縮放與自由旋轉操作

        BufferedImage img;

Java中Image的水準翻轉、縮放與自由旋轉操作

        Graphics2D graphics2d;

Java中Image的水準翻轉、縮放與自由旋轉操作

        (graphics2d = (img = new BufferedImage(w, h, type))

Java中Image的水準翻轉、縮放與自由旋轉操作

                .createGraphics()).setRenderingHint(

Java中Image的水準翻轉、縮放與自由旋轉操作

                RenderingHints.KEY_INTERPOLATION,

Java中Image的水準翻轉、縮放與自由旋轉操作

                RenderingHints.VALUE_INTERPOLATION_BILINEAR);

Java中Image的水準翻轉、縮放與自由旋轉操作

        graphics2d.rotate(Math.toRadians(degree), w / 2, h / 2);

Java中Image的水準翻轉、縮放與自由旋轉操作

        graphics2d.drawImage(bufferedimage, 0, 0, null);

Java中Image的水準翻轉、縮放與自由旋轉操作

        graphics2d.dispose();

Java中Image的水準翻轉、縮放與自由旋轉操作

        return img;

Java中Image的水準翻轉、縮放與自由旋轉操作

    }

Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作

    /**

Java中Image的水準翻轉、縮放與自由旋轉操作

     * 變更圖像為指定大小

Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作

     * @param w

Java中Image的水準翻轉、縮放與自由旋轉操作

     *            寬

Java中Image的水準翻轉、縮放與自由旋轉操作

     * @param h

Java中Image的水準翻轉、縮放與自由旋轉操作

     *            高

Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作

    public static BufferedImage resizeImage(final BufferedImage bufferedimage,

Java中Image的水準翻轉、縮放與自由旋轉操作

            final int w, final int h) {

Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作

        (graphics2d = (img = createImage(w, h, type))

Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作

        graphics2d.drawImage(bufferedimage, 0, 0, w, h, 0, 0, bufferedimage

Java中Image的水準翻轉、縮放與自由旋轉操作

                .getWidth(), bufferedimage.getHeight(), null);

Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作

     * 水準翻轉圖像

Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作

     * @param bufferedimage 目标圖像

Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作

    public static BufferedImage flipImage(final BufferedImage bufferedimage) {

Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作

        (graphics2d = (img = createImage(w, h, bufferedimage

Java中Image的水準翻轉、縮放與自由旋轉操作

                .getColorModel().getTransparency())).createGraphics())

Java中Image的水準翻轉、縮放與自由旋轉操作

                .drawImage(bufferedimage, 0, 0, w, h, w, 0, 0, h, null);

Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作
Java中Image的水準翻轉、縮放與自由旋轉操作

本文轉自 cping 51CTO部落格,原文連結:http://blog.51cto.com/cping1982/130066