java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/JPEGCodec

时间:2023-01-19 21:22:22

java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/JPEGCodec

 

这个类在 rt.jar 里面

本地开发,jre里有这个包,所有不会报错

但是在新的 jdk 版本中,这个类不推荐使用了,使用 ImageIO.write 方法替代

 

最新的代码如下:

(Java 压缩微信头像的工具方法)

从url获取压缩后的图片,以base64返回 ( data:image/jpeg;base64,) 

	public static String getCompressBase64FromUrl(String url, int width, int height) throws Exception {
		Image img = ImageIO.read(new URL(url));
		BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		// Image.SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的优先级比速度高 生成的图片质量比较好 但速度慢
		tag.getGraphics().drawImage(img.getScaledInstance(60, 60, Image.SCALE_SMOOTH), 0, 0, null);

		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		ImageIO.write(tag, "jpeg", baos); // 这里也可以传 FileOutputStream 写进文件里
		return new String(Base64.encodeBase64(baos.toByteArray()));
	}

 

// 原过时写法
// JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(baos);
// encoder.encode(tag);