java-为指定的图像文件加透明阴影

来源:互联网 发布:在哪里学淘宝美工 编辑:程序博客网 时间:2024/06/09 17:46
import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Graphics2D;import java.awt.Transparency;import java.awt.image.BufferedImage;import java.io.File;import javax.imageio.ImageIO;public class AddShadow {/** * @param srcFile *            源图像文件 * @param x *            阴影宽度 * @param y *            阴影高度 * @param color *            阴影颜色 * @param alpha *            透明度,0-1之间取值 * @throws Exception *             为指定的文件加上透明阴影 */public final static void add(File srcFile, int x, int y, Color color,float alpha) throws Exception {// 读取源文件BufferedImage srcImg = ImageIO.read(srcFile);// 在新建一个图像缓冲区,大小包括阴影部分BufferedImage bufImg = new BufferedImage(srcImg.getWidth() + x,srcImg.getHeight() + y, BufferedImage.TYPE_INT_RGB);Graphics2D g = bufImg.createGraphics();// 创建一个支持有透明度的图像缓冲区bufImg = g.getDeviceConfiguration().createCompatibleImage(srcImg.getWidth() + x, srcImg.getHeight() + y,Transparency.TRANSLUCENT);g.dispose();// 画阴影部分g = bufImg.createGraphics();g.setComposite(AlphaComposite.getInstance(AlphaComposite.XOR, alpha));g.setColor(Color.black);g.setBackground(Color.red);g.fillRect(x, y, srcImg.getWidth(), srcImg.getHeight());g.dispose();// 画源图像g = bufImg.createGraphics();g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC, 1));g.drawImage(srcImg, 0, 0, null);g.dispose();String oldName = srcFile.getName();// 目标文件必须是PNG文件String fileName = "d:/ccc/"+ oldName.substring(0, oldName.length() - 4) + ".png";ImageIO.write(bufImg, "PNG", new File(fileName));}public static void main(String[] args) throws Exception {// TODO Auto-generated method stubFile f = new File("d:/ccc");File imgFiles[] = f.listFiles(new ImageFilter());for (File x : imgFiles) {System.out.println(x.getName() + "正在加阴影...");add(x, 20, 20, Color.red, 0.3f);}System.out.println("阴影添加成功,阴影文件扩展名为.png");}}

原创粉丝点击