JPEGCodec.createJPEGDecoder在服务器上卡住不动

/**

* 根据目标路径解码源文件

*/

private static BufferedImage decodeIn(String targetFilePath) throws Exception{

//解码当前JPEG数据流,返回BufferedImage对象

BufferedImage buffImg = null;

String extName=FileUtil.getFileFormat(targetFilePath);

String fileName=FileUtil.getFileName(targetFilePath);

String fronName=FileUtil.getFrontName(fileName);

//文件路径

String jpegPath=targetFilePath.replace(fileName,fronName+".jpeg");

//转换jpeg后进行处理

if(!extName.toLowerCase().equals("bmp")){

toJPG(targetFilePath, jpegPath);

}else{

bmpTojpg(targetFilePath, jpegPath);

}

FileInputStream jpegIs = new FileInputStream(jpegPath);

//执行到下面这段代码就卡着没有任何的反应 图片也没有生成

// JPEGImageDecoder jpegDecoder = JPEGCodec.createJPEGDecoder(jpegIs);

// buffImg = jpegDecoder.decodeAsBufferedImage();

//使用这段代码代替上面的两行代码

buffImg = ImageIO.read(jpegIs);

return buffImg;

}

/**

* 根据输出路径编码目标文件

*/

private static void encodeOut(String beWaterMarkFilePath,BufferedImage buffImg){

OutputStream os = null;

try {

os = new FileOutputStream(beWaterMarkFilePath);

//创键编码器,用于编码内存中的图象数据。

//执行到下面这段代码就卡着没有任何的反应 图片也没有生成

// JPEGImageEncoder en = JPEGCodec.createJPEGEncoder(os);

// en.encode(buffImg);

//使用这段代码代替上面的两行代码

ImageIO.write(buffImg,"jpeg",os);

} catch (Exception e) {

throw new BizException(BizCode.NOT_DEFINE_CODE,"FileNotFoundException水印文件"+beWaterMarkFilePath+"不存在!");

}finally{

try {

if(os!=null){

os.close();

}

} catch (IOException e) {

log.info("IO流关闭异常");

}

}

}

--------------------------------------------------------------------

JPEGImageDecoder jpegDecoder = JPEGCodec.createJPEGDecoder(jpegIs);

buffImg = jpegDecoder.decodeAsBufferedImage();

**替换成**

**buffImg = ImageIO.read(jpegIs);**

-----------------------------------------------------------------------

JPEGImageEncoder en = JPEGCodec.createJPEGEncoder(os);

en.encode(buffImg);

**替换成**

**ImageIO.write(buffImg,"jpeg",os);**

现在项目中用到的生成jpeg的包 com.sun.image.codec.jpeg.JPEGCodec 是sun公司的私有实现的,现在过时了,导致下载失败

解决方法,使用 ImageIO 进行图像格式文件的读写

你可能感兴趣的:(JPEGCodec.createJPEGDecoder在服务器上卡住不动)