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