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