createJPEGDecoder、createJPEGEncoder在linux上卡着没有反应解决方案

/**
* 根据目标路径解码源文件
*/
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);**
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值