博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Data Url (data:image/jpg;base64,)将小图片生成数据流形式
阅读量:5200 次
发布时间:2019-06-13

本文共 1701 字,大约阅读时间需要 5 分钟。

  就是一张图片的Data URL,利用base64编码把图片数据翻译成标准ASCII字符。

 相当于

 Data URL是在本地直接绘制图片,不是从服务器加载,所以节省了HTTP连接,起到加速网页的作用。 data:image/jpg;    声明数据协议及类型名称 base64,               编码形式为base64 /9j/4AAQSkZ……    base64编码结果 用base64转图片:http://base64.xpcha.com/pic.html 用base64转文件: http://yanshi.sucaihuo.com/jquery/25/2579/demo/ java实现图片与base64字符串之间的转换:
  1. import java.io.FileInputStream;  
  2. import java.io.FileOutputStream;  
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.io.OutputStream;  
  6.   
  7. import sun.misc.BASE64Decoder;  
  8. import sun.misc.BASE64Encoder;  
  9.   
  10. public class Base64Test   
  11. {  
  12.     public static void main(String[] args)  
  13.     {  
  14.         String strImg = GetImageStr();  
  15.         System.out.println(strImg);  
  16.         GenerateImage(strImg);  
  17.     }  
  18.     //图片转化成base64字符串  
  19.     public static String GetImageStr()  
  20.     {
    //将图片文件转化为字节数组字符串,并对其进行Base64编码处理  
  21.         String imgFile = "d://test.jpg";//待处理的图片  
  22.         InputStream in = null;  
  23.         byte[] data = null;  
  24.         //读取图片字节数组  
  25.         try   
  26.         {  
  27.             in = new FileInputStream(imgFile);          
  28.             data = new byte[in.available()];  
  29.             in.read(data);  
  30.             in.close();  
  31.         }   
  32.         catch (IOException e)   
  33.         {  
  34.             e.printStackTrace();  
  35.         }  
  36.         //对字节数组Base64编码  
  37.         BASE64Encoder encoder = new BASE64Encoder();  
  38.         return encoder.encode(data);//返回Base64编码过的字节数组字符串  
  39.     }  
  40.       
  41.     //base64字符串转化成图片  
  42.     public static boolean GenerateImage(String imgStr)  
  43.     {   //对字节数组字符串进行Base64解码并生成图片  
  44.         if (imgStr == null) //图像数据为空  
  45.             return false;  
  46.         BASE64Decoder decoder = new BASE64Decoder();  
  47.         try   
  48.         {  
  49.             //Base64解码  
  50.             byte[] b = decoder.decodeBuffer(imgStr);  
  51.             for(int i=0;i<b.length;++i)  
  52.             {  
  53.                 if(b[i]<0)  
  54.                 {
    //调整异常数据  
  55.                     b[i]+=256;  
  56.                 }  
  57.             }  
  58.             //生成jpeg图片  
  59.             String imgFilePath = "d://222.jpg";//新生成的图片  
  60.             OutputStream out = new FileOutputStream(imgFilePath);      
  61.             out.write(b);  
  62.             out.flush();  
  63.             out.close();  
  64.             return true;  
  65.         }   
  66.         catch (Exception e)   
  67.         {  
  68.             return false;  
  69.         }  
  70.     }  
  71. }  

转载于:https://www.cnblogs.com/yangxiaomei/p/9020099.html

你可能感兴趣的文章
服务器被疑似挖矿程序植入107.174.47.156,发现以及解决过程(建议所有使用sonatype/nexus3镜像的用户清查一下)...
查看>>
类型“XXX”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。
查看>>
JQuery 学习
查看>>
session token两种登陆方式
查看>>
C# ArrayList
查看>>
IntelliJ IDEA 12集成Tomcat 运行Web项目
查看>>
java,多线程实现
查看>>
个人作业4-alpha阶段个人总结
查看>>
android smack MultiUserChat.getHostedRooms( NullPointerException)
查看>>
递归-下楼梯
查看>>
实用的VMware虚拟机使用技巧十一例
查看>>
监控工具之---Prometheus 安装详解(三)
查看>>
Azure Iaas基础之---创建虚拟机
查看>>
不错的MVC文章
查看>>
网络管理相关函数
查看>>
IOS Google语音识别更新啦!!!
查看>>
20190422 T-SQL 触发器
查看>>
[置顶] Linux终端中使用上一命令减少键盘输入
查看>>
poj1422_有向图最小路径覆盖数
查看>>
BootScrap
查看>>