zoukankan      html  css  js  c++  java
  • 图片转换工具类

    package com.cj.photography.util;
    
    import sun.misc.BASE64Decoder;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
    import java.util.UUID;
    
    /**
     * @author Jamin <br>
     * @date 2019/4/10 10:33 <br>
     *     将base64转为图片的工具
     */
    public class Base64 {
      static String base64 = "base64,";
    
      public static String generateImage(String imgStr, String fileName, String type) {
        if (imgStr == null) {
          // 图像数据为空
          return null;
        }
        BASE64Decoder decoder = new BASE64Decoder();
        try {
          // Base64解码
          byte[] b = decoder.decodeBuffer(imgStr);
          for (int i = 0; i < b.length; ++i) {
            if (b[i] < 0) {
              b[i] += 256;
            }
          }
          // 生成jpeg图片
          String imgFilePath = "D:\upload\images\" + fileName + "." + type;
          File file = new File(imgFilePath);
          if (!file.getParentFile().exists()) {
            boolean result = file.getParentFile().mkdirs();
            if (!result) {
              return null;
            }
          }
          OutputStream out = new FileOutputStream(imgFilePath);
          out.write(b);
          out.flush();
          out.close();
          //      修改图片地址
          String imgAdress = "/img/" + fileName + "." + type;
    
          return imgAdress;
        } catch (Exception e) {
          return null;
        }
      }
    /**
     * 从富文本编辑器中的内容
    */
      public static String conversionImage(String str) {
        //    while 循环是否含有base64
        //    有把字符串截取出来
        //    要返回的字符串
        String strreturn = str;
        while (str.contains(base64)) {
          //      复制一个str用于存储截取的base64
          String str1 = str;
          //      截取image
          str1 = str1.substring(str1.indexOf("image"));
          //      用于二次截取的变量
          String str3 = str1;
          String type = str1.substring(str1.indexOf("image/") + 6, str1.indexOf(";base64"));
          //      开始点
          int i = str1.indexOf(base64) + base64.length();
          //      结束点
          int i1 = str1.indexOf("="") + 1;
          //      str1截取获取到base64
          str1 = str1.substring(i, i1);
          //      执行字符串转图片操作
          String imgurl = generateImage(str1, UUID.randomUUID().toString(), type);
          // 转换为图片后将字符串替换
          if (imgurl != null) {
            str1 = str;
            int i2 = str1.indexOf("data:");
            str1 = str1.substring(i2);
            int i3 = str1.indexOf("="") + 1;
            String src = str1.substring(0, i3);
            strreturn = strreturn.replace(src, imgurl);
          }
          //      str从结束点截取
          str = str.substring(i1);
        }
        return strreturn;
      }
    
      /**
       * 裁剪头像    普通图片base64
       *
       * @param str iconBase64码
       * @return image 地址
       */
      public static String base64Image(String str) {
        String str1 = str;
        String type = str.substring(str.indexOf("image/") + 6, str.indexOf(";base64"));
        int i = str1.indexOf(base64) + base64.length();
        String substring = str1.substring(i);
        String s = generateImage(substring, UUID.randomUUID().toString(), type);
        return s;
      }
    }
    
    作者: JaminYe
    版权声明:本文原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
  • 相关阅读:
    Chrome浏览器设置默认编码
    linux上安装subversion
    详解Linux命令行下常用svn命令
    css 使容器宽度适应内容宽
    Windsor Spring
    T4 Generate POCO Class for MSSQ
    MSSQ 树型结构数据 循环操作
    System.Reflection.Emit 动态实现接口
    T4 SqlSugar MySql
    微信多开
  • 原文地址:https://www.cnblogs.com/JaminYe/p/10763449.html
Copyright © 2011-2022 走看看