1. 程式人生 > 實用技巧 >根據圖片名新增時間水印

根據圖片名新增時間水印

新增文字水印程式碼

public final class ImageUtils {
    public ImageUtils() {

    }

    /**
     * 把圖片印刷到圖片上
     *
     * @param pressImg  --
     *                  水印檔案
     * @param targetImg --
     *                  目標檔案
     * @param x
     * @param y
     */
    public final static void pressImage(String pressImg, String targetImg,
                                        
int x, int y) { try { File _file = new File(targetImg); Image src = ImageIO.read(_file); int wideth = src.getWidth(null); int height = src.getHeight(null); BufferedImage image = new BufferedImage(wideth, height, BufferedImage.TYPE_INT_RGB); Graphics g
= image.createGraphics(); g.drawImage(src, 0, 0, wideth, height, null); // 水印檔案 File _filebiao = new File(pressImg); Image src_biao = ImageIO.read(_filebiao); int wideth_biao = src_biao.getWidth(null); int height_biao = src_biao.getHeight(null
); g.drawImage(src_biao, wideth - wideth_biao - x, height - height_biao - y, wideth_biao, height_biao, null); // / g.dispose(); FileOutputStream out = new FileOutputStream(targetImg); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(image); out.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 列印文字水印圖片 * * @param pressText --文字 * @param srcImg -- * 目標圖片 * @param fontName -- * 字型名 * @param fontStyle -- * 字型樣式 * @param color -- * 字型顏色 * @param fontSize -- * 字型大小 * @param x -- * 偏移量 * @param y */ public static void pressText(String pressText, String srcImg, String targetImg, String fontName, int fontStyle, Color color, int fontSizePercent, int x, int y) { try { File _file = new File(srcImg); Image src = ImageIO.read(_file); BufferedImage image2 = ImageIO.read(_file); int width = src.getWidth(null); int height = src.getHeight(null); if (width > height) { BufferedImage image = new BufferedImage(width, height, ((BufferedImage) src).getType()); } BufferedImage image = new BufferedImage(width, height, ((BufferedImage) src).getType()); Graphics2D g = image.createGraphics(); g.drawImage(src, 0, 0, width, height, null); g.setColor(color); int fontSize = 0; if (width < height) { fontSize = width / 100 * fontSizePercent; } else { fontSize = height / 100 * fontSizePercent; } g.setFont(new Font(fontName, fontStyle, fontSize)); g.drawString(pressText, width - fontSize * x, height - fontSize * y); g.dispose(); FileOutputStream out = new FileOutputStream(targetImg); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(image); out.close(); } catch (Exception e) { System.out.println(e); } } public static void main(String[] args) throws ParseException { String srcPath = "F:\\照片\\iphone\\"; String targetPath = "F:\\照片\\iphone水印\\"; File rootDir = new File(srcPath); String[] list = rootDir.list(); for (String fileName : list) { String filePath = srcPath + fileName; String pressText = generatePressText(fileName); String targetPathFile = targetPath + fileName; pressText(pressText, filePath, targetPathFile, "Times New Roman", Font.PLAIN, Color.ORANGE, 5, 8, 1); System.out.println(fileName); } } // 根據圖片名進行調整規則 private static String generatePressText(String fileName) throws ParseException { DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HHmmSS"); DateFormat format2 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); Date date = format1.parse(fileName); return format2.format(date); } }

執行結果