使用thumbnailator 時部分圖片拋異常


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;
        }

具體原因還沒有找出,

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM