Java处理图片报错:two SOF markers

Java处理图片时遇到报以下错误,百度没有解决办法,于是在谷歌上找到了可行的办法,记录于此。

sun.awt.image.ImageFormatException: Invalid JPEG file structure: two SOF markers
    at sun.awt.image.JPEGImageDecoder.readImage(Native Method)
    at sun.awt.image.JPEGImageDecoder.produceImage(JPEGImageDecoder.java:141)
    at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:269)
    at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:205)
    at sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)

解决办法:

                File file = new File(imgPath);

				//以下代码是处理部分图片黑色问题:(two SOF markers)
				ImageInputStream input = ImageIO.createImageInputStream(file); // TODO: null check
				Iterator<ImageReader> readers = ImageIO.getImageReaders(input); // TODO: hasNext check
				ImageReader reader = readers.next();
				reader.setInput(input);

				// This is the important part, get or create a ReadParam,
				// create a destination image to hold the decoded result,
				// then pass that image with the param.
				ImageReadParam param = reader.getDefaultReadParam();
				BufferedImage image = reader.getImageTypes(0).next().createBufferedImage(reader.getWidth(0), reader.getHeight(0));
				param.setDestination(image);

				try {
					image = reader.read(0, param); // Don't really need the return value here, as it will always be same value as "image"
				}
				catch (IOException e) {
					// Ignore this exception or display a warning or similar, for exceptions happening during decoding
					e.printStackTrace();
				}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值