根据图片名添加时间水印

添加文字水印代码

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);
    }
}   

运行结果

posted on 2020-12-05 17:57  小鸟的士林  阅读(165)  评论(0编辑  收藏  举报

导航