Java 识别图片分辨率的问题

近期做关于识别PDF的项目,里面涉及到提取PDF中的图片,并识别图片的分辨率,对较小分辨率的图片,再生成新的PDF的时候舍弃。

对于提取PDF中的图片信息可以使用PDFBox库,很简单也很灵活(当然也存在bug,我在提取某个PDF文件中图片的时候,发现有一些图片在原文件中根本不存在,还希望来个大神解答一下。。。),废话少说,直接附上代码供大家参考:

InputStream input = null;  
        File pdfFile = new File( Global.readPath );  
        PDDocument document = null;         
        try{  
            input = new FileInputStream( pdfFile );  
            //加载 pdf 文档  
            document = PDDocument.load( input );          
            
            int count = 0;  
            for( int i = 0; i < pages.size() ; i++ )  
            {  
                PDPage page = pages.get(i);  
                if( null != page )  
                {  
               
       
                //获取当前页面的图片信息
                PDResources resources = page.findResources();
                Map images = resources.getImages();
               
                PageImages pageImage = new PageImages();
                if(null != images){
               
                System.out.println("第" + (i+1) +"页:图片" + (count));
                //每一页的图片信息
                List pageImagePaths = new ArrayList<>();
               
                Set keySet = images.keySet();
                Iterator it = keySet.iterator();
                while(it.hasNext()){
                Object obj = it.next();
                PDXObjectImage image = (PDXObjectImage) images.get(obj);
                image.write2file(Global.imagePath + "/" + String.valueOf(count));
                pageImagePaths.add(Global.imagePath + "/" + count + ".jpg");
                count++;                
                }
                pageImage.setImagesPath(pageImagePaths);                
                }
                Global.pageImages.add(pageImage);

}

}

}


下面说一下识别图片的分辨率问题,这在java中其实很简单,几行代码就搞定了:

public void dealImage(String path){
File file = new File(path);
BufferedImage bi = null;
try {
bi = ImageIO.read(file);
width = bi.getWidth();
height = bi.getHeight();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
}

将图片文件传给ImageIO处理,即可以得到该图片的分辨率信息。

你可能感兴趣的:(中信所英文PDF翻译)