Java 检查图片完整性代码

最近使用爬虫下载图片,遇到ctrl+C或者INT进行中断时,部分图片不能下载完整。因此需要筛选出这部分不完整图片的代码。

这里仅列出image/jpeg的例子:

import org.junit.Test;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import java.io.*;
import java.util.Iterator;

import static org.junit.Assert.assertEquals;

/**
 * Description: To do
 * 

* Author : Adore Chen * Created: 2018-08-22 */ public class ImageCheck { @Test public void testAll(){ int count = 0; File dir = new File("/tmp/data/pics/"); for(File file: dir.listFiles()){ if(!isJPEG(file.getAbsolutePath())){ System.out.println(file.getName()); //file.delete(); count++; } } assertEquals(0, count); } private Boolean isJPEG(String fileName) { boolean canRead = false; try(ImageInputStream iis = ImageIO.createImageInputStream(new File(fileName))){ Iterator readers = ImageIO.getImageReadersByFormatName("jpg"); while (readers.hasNext()) { ImageReader reader = readers.next(); reader.setInput(iis); reader.read(0); canRead = true; break; } }catch (Exception e){ } return canRead; } }

你可能感兴趣的:(java)