Java tutorial
//package com.java2s; /* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.awt.image.BufferedImageOp; import java.awt.image.RescaleOp; public class Main { /** * Inverts the alpha channel of the given {@link BufferedImage}. RGB data for the inverted area * are undefined, so it's generally best to fill the resulting image with a color. * * @param source The source image. * @return A new image with an alpha channel inverted from the original. */ public static BufferedImage invertedAlphaImage(BufferedImage source) { final float[] scaleFactors = new float[] { 1, 1, 1, -1 }; final float[] offsets = new float[] { 0, 0, 0, 255 }; return operatedImage(source, new RescaleOp(scaleFactors, offsets, null)); } /** * Applies a {@link BufferedImageOp} on the given {@link BufferedImage}. * * @param source The source image. * @param op The operation to perform. * @return A new image with the operation performed. */ public static BufferedImage operatedImage(BufferedImage source, BufferedImageOp op) { BufferedImage newImage = newArgbBufferedImage(source.getWidth(), source.getHeight()); Graphics2D g = (Graphics2D) newImage.getGraphics(); g.drawImage(source, op, 0, 0); return newImage; } /** * Creates a new ARGB {@link BufferedImage} of the given width and height. * * @param width The width of the new image. * @param height The height of the new image. * @return The newly created image. */ public static BufferedImage newArgbBufferedImage(int width, int height) { return new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); } }