天天看点

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