자바 워 터 마크 도구 류

3072 단어 자바
얼마 전에 작업 중 에 JPEG 그림 에 워 터 마크 를 추가 하 는 워 터 마크 기능 을 만 났 습 니 다 (다른 파일 형식 은 테스트 가 필요 합 니 다).또 이 도 구 는 실현 과정 만 기록 하고 복잡 한 포장 을 하지 않 았 다.
 
보 시 는 분 들 에 게 도움 이 되 셨 으 면 좋 겠 고 조언 도 많이 해 주 셨 으 면 좋 겠 습 니 다.
 
public class ImageAddWaterMark {
        
        public static void main(String[] args) {
                File originImgFile = new File("D:/originImage.jpg");
                File watermarkImgFile = new File("D:/watermarkImage.jpg");
                File targetImgFile = new File("D:/targetImage.jpg");
                addWatermark(originImgFile,watermarkImgFile,targetImgFile);
        }
        
        /**
     *       
     * @param originImgFile   
     * @param watermarkImgFile    
     * @param targetImgFile     
     */
    public static File addWatermark(File originImgFile,File watermarkImgFile,File targetImgFile){
        FileOutputStream fileOutputStream = null;
        try {
            //  
            Image originImage = ImageIO.read(originImgFile);
            int originWidth = originImage.getWidth(null);//   
            int originHeight = originImage.getHeight(null);//   
            //      ,           8  RGB    .(              )
            BufferedImage image = new BufferedImage(originWidth,originHeight,BufferedImage.TYPE_INT_RGB);
            Graphics g = image.createGraphics();//  Graphics   BufferedImage
            g.drawImage(originImage,0,0,originWidth,originHeight,null);//     
            
            //   
            Image waterMarkImage = ImageIO.read(watermarkImgFile);
            int waterMarkWidth = waterMarkImage.getWidth(null);//    
            int waterMarkHeight = waterMarkImage.getHeight(null);//    
            //            (        )
            g.drawImage(waterMarkImage,(originWidth-waterMarkWidth),(originHeight-waterMarkHeight),waterMarkWidth,waterMarkHeight,null);
            //                     
            g.dispose();
            
            ImageWriter imgWrier = ImageIO.getImageWritersByFormatName("jpg").next();
            imgWrier.reset();
            
            fileOutputStream = new FileOutputStream(targetImgFile);//    
            imgWrier.setOutput(ImageIO.createImageOutputStream(fileOutputStream));
            //IIOImage:    、  (  )                       
            imgWrier.write(new IIOImage(image,null,null));
            fileOutputStream.flush();
            return targetImgFile;
        }catch(Exception e){
                e.printStackTrace();
        }finally {
                try{
                        if(fileOutputStream!=null) fileOutputStream.close();
                }catch(Exception e){
                        e.printStackTrace();
                }
        }
        return null;
    }

}

좋은 웹페이지 즐겨찾기