net.coobird.thumbnailator.tasks.UnsupportedFormatException: No suitable ImageReader found for source data. at net.coobird.thumbnailator.tasks.io.InputStreamImageSource.read(Unknown Source) at net.coobird.thumbnailator.tasks.SourceSinkThumbnailTask.read(Unknown Source) at net.coobird.thumbnailator.Thumbnailator.createThumbnail(Unknown Source) at net.coobird.thumbnailator.Thumbnails$Builder.toOutputStream(Unknown Source)
處理代碼如下:
Blob zp = rs.getBlob("swry_zp"); if(zp!=null){ is=zp.getBinaryStream(); if (null != is) { baos = new ByteArrayOutputStream(); //對圖片進行壓縮處理 Thumbnails.of(is).forceSize(98, 137).toOutputStream(baos); //將照片進行Base64轉碼 sy.setSwry_zp(Base64.encodeBase64String(baos.toByteArray())); } }
從oracle中讀出照片信息,照片以blog格式存儲,然后以Base64編碼返回給客戶端,以上錯誤信息只是在獲取某些照片信息時報錯,有些照片
這種方式處理是沒有問題的.當前是:
Thumbnails.of(is).forceSize(98, 137).toOutputStream(baos);
拋出IO異常,然后rs就中斷了:
while(rs.next()){}
其源碼中拋出此異常的代碼段如下:
public BufferedImage read() throws IOException { ImageInputStream iis = ImageIO.createImageInputStream(is); if (iis == null) { throw new IOException("Could not open InputStream."); } Iterator<ImageReader> readers = ImageIO.getImageReaders(iis); if (!readers.hasNext()) { throw new UnsupportedFormatException( UnsupportedFormatException.UNKNOWN, "No suitable ImageReader found for source data." ); } ImageReader reader = readers.next(); reader.setInput(iis); inputFormatName = reader.getFormatName(); BufferedImage img = reader.read(FIRST_IMAGE_INDEX); iis.close(); return img; }
具體原因還沒有找出,