欢迎来真孝善网,为您提供真孝善正能量书籍故事!

Java中通过Base64编码保存图片及生成不同分辨率副本的方法

时间:11-15 名人轶事 提交错误
* 上传图片 * @param base64图像编码字符串 * @return上传成功后的文件名 */ 公共静态字符串上传(字符串base64){ String dir=getRequest().getRealPath(UPLOAD_PATH); 文件fileLocation=new File(dir); 字符串文件类型=base64.substring(11, 14); if(!fileLocation.exists()) { boolean isCreated=fileLocation.mkdir(); if(!isCreated) { //创建目标上传目录失败,可以做其他处理,比如抛出自定义异常等,一般情况下不应该出现这种情况。 返回空值; } } if(base64.indexOf("jpeg") !=-1) { //当jpeg文件存在时 base64=base64.replaceFirst("jpeg", "jpg"); } String tempStr=UUID.randomUUID().toString()+System.currentTimeMillis(); String upName=tempStr+"."+文件类型; 文件输出流输出; 字符串iconBase64=base64.substring(22); 尝试{ byte[] buffer=new BASE64Decoder().decodeBuffer(iconBase64); out=new FileOutputStream(dir+"/"+upName); 输出.write(缓冲区); 关闭(); String upNameXhdpi=tempStr+"-xhdpi."+fileType; String upNameMhdpi=tempStr+"-mhdpi."+fileType; FileOutputStream outXhdpi=new FileOutputStream(dir+"/"+upNameXhdpi); FileOutputStream outMhdpi=new FileOutputStream(dir+"/"+upNameMhdpi); resizeImage(iconBase64, outXhdpi, xhdpi, fileType);

resizeImage(iconBase64, outMhdpi, mhdpi, fileType); 返回PATH+UPLOAD_PATH + "/" +upName; } catch (FileNotFoundException e) { //TODO 自动生成的catch 块 e.printStackTrace(); 返回空值; } catch (IOException e) { //TODO 自动生成的catch 块 e.printStackTrace(); 返回空值; } } /** * 改变图片的尺寸,直到宽度为size,然后高度与宽度成比例变化。 * @param为上传图片的输入流 * @param os 改变图像大小后,将图像流输出到目标OutputStream * @param size 新图像的宽度 * @param format 新图片的格式 * @抛出IOException */ public static void resizeImage(String is, OutputStream os, int size, String format) throws IOException { ByteArrayInputStream in=new ByteArrayInputStream(new BASE64Decoder().decodeBuffer(is)); BufferedImage prevImage=ImageIO.read(in); 双宽度=prevImage.getWidth(); 双倍高度=prevImage.getHeight(); 双百分比=尺寸/宽度; int newWidth=(int)(宽度* 百分比); int newHeight=(int)(高度* 百分比); BufferedImage 图像=new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_BGR); 图形图形=image.createGraphics(); Graphics.drawImage(prevImage, 0, 0, newWidth, newHeight, null); ImageIO.write(图像、格式、操作系统); os.flush(); 附寄(); os.close();

好了,文章到此结束,希望可以帮助到大家。

用户评论

景忧丶枫涩帘淞幕雨

现在想把图片放在网页里又不需要占用太多空间,Base64这种方法还真不错,尤其这个题目的做法可以根据屏幕大小显示不同的图,更节省资源了!

    有15位网友表示赞同!

莫阑珊

学到新东西啦!原来可以用 Base64 来保存图片,而且还能生成不同分辨率的副本,这样上传和展示都会方便很多。

    有16位网友表示赞同!

心安i

这么做能让图片加载速度更快吧?因为每次只需要根据需要加载对应分辨率的图片文件。

    有16位网友表示赞同!

烟花巷陌

感觉这个方法挺实用的,在移动端开发中尤其合适,可以保证画面流畅度同时控制网页大小。

    有10位网友表示赞同!

伪心

Java里处理 Base64 的库有哪些?有没有推荐的比较常用的?

    有19位网友表示赞同!

情字何解ヘ

不同分辨率的图片该怎么生成呢?是用图像处理库的吗?

    有10位网友表示赞同!

见朕骑妓的时刻

把图片保存成 Base64 后,后续操作方便吗?比如修改?

    有7位网友表示赞同!

赋流云

这个方法会不会影响图片质量?不同的分辨率下会有像素损失吗?

    有5位网友表示赞同!

念旧情i

这篇文章介绍的比较全面了,清晰易懂!

    有8位网友表示赞同!

◆残留德花瓣

以后遇到这种情况就可以参考这个方法来解决啦。很实用!

    有8位网友表示赞同!

她的风骚姿势我学不来

这种方法在实际项目中也能用到吗?有没有案例演示?

    有20位网友表示赞同!

一生只盼一人

感觉学习一下 Java 中 Base64 的使用方法很有必要,很多地方都能用到。

    有10位网友表示赞同!

半世晨晓。

之前想过用 Base64 保存图片减少流量,现在终于知道怎么在 Java 中实现啦!

    有13位网友表示赞同!

陌然淺笑

这个方法比把图片直接上传好?有啥优缺点呢?

    有13位网友表示赞同!

伤离别

这篇文章给了我很好的启发,以后尝试一下这种方法。

    有5位网友表示赞同!

绝版女子

原来还有这么多方法可以处理图片的尺寸大小,真是太牛了!

    有7位网友表示赞同!

金橙橙。-

学习 Java 的时候一定要跟着实践去,这个题目的代码很有参考价值。

    有13位网友表示赞同!

烬陌袅

感谢分享这篇文章,让我了解了许多知识。

    有20位网友表示赞同!

孤败

希望以后能看到更多关于图片处理的博客文章,学习一下这些实用技能。

    有18位网友表示赞同!

【Java中通过Base64编码保存图片及生成不同分辨率副本的方法】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活