java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/JPEGCodecjava
這個類在 rt.jar 裏面算法
本地開發,jre裏有這個包,因此不會報錯微信
可是在新的 jdk 版本中,這個類不推薦使用了,使用 ImageIO.write 方法替代工具
最新的代碼以下:url
(Java 壓縮微信頭像的工具方法)spa
從url獲取壓縮後的圖片,以base64返回 ( data:image/jpeg;base64,) code
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); blog