图片转换工具类

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

原文地址:https://www.cnblogs.com/JaminYe/p/10763449.html

时间: 2024-08-04 05:17:51

图片转换工具类的相关文章

Android Bitmap与DrawAble与byte[]与InputStream之间的转换工具类【转】

package com.soai.imdemo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.grap

常用的Java字符转换工具类

该类里包含了Java中常用的字符串处理方法,如日期处理.金额转换... ----------------------------------------------------------------------------------------- import java.math.BigDecimal;import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.util.Calendar;import jav

分享万能java字符串编码转换工具类

代码下载地址:http://www.zuidaima.com/share/1795356301560832.htm 原文:分享万能java字符串编码转换工具类 package com.zuidaima.util; import java.io.UnsupportedEncodingException; /** * 转换字符串的编码 */ public class ChangeCharset { /** 7位ASCII字符,也叫作ISO646-US.Unicode字符集的基本拉丁块 */ publ

生成随机验证码图片的工具类

package utils; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.ByteArrayOutpu

图片处理工具类 - ImageUtils.java

纯JAVA实现的图片处理工具类,提供图片的裁剪.压缩.获取尺寸.制作圆角等方法. 源码如下:(点击下载 -ImageUtils.java .FolderUtils.java .commons-io-2.4.jar.commons-lang-2.6.jar) import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt

HBaseConvetorUtil 实体转换工具类

HBaseConvetorUtil 实体转换工具类 public class HBaseConvetorUtil { /** * @Title: convetor * @Description: 传入hbase返回结果值,返回实例集合 * @param * @return * @throws */ public static <T> List<T>convetor(Class<T> cla,ResultScanner resultScanner) throws Exce

Json与javaBean之间的转换工具类

Json与javaBean之间的转换工具类 /**  * Json与javaBean之间的转换工具类  *  * @author 晚风工作室 www.soservers.com  * @version 20111221  *  * {@code 现使用json-lib组件实现  *    需要  *     json-lib-2.4-jdk15.jar  *     ezmorph-1.0.6.jar  *     commons-collections-3.1.jar  *     commo

(转)Android中px与dip,sp与dip等的转换工具类

功能 通常在代码中设置组件或文字大小只能用px,通过这个工具类我们可以把dip(dp)或sp为单位的值转换为以px为单位的值而保证大小不变.方法中的参数请参考http://www.cnblogs.com/wader2011/archive/2011/11/28/2266669.html 代码 /** * Android大小单位转换工具类 *  * @author wader *  */public class DisplayUtil { /**  * 将px值转换为dip或dp值,保证尺寸大小不

java 图片处理工具类

import java.awt.Image;  import java.awt.Rectangle;  import java.awt.geom.AffineTransform;  import java.awt.image.AffineTransformOp;  import java.awt.image.BufferedImage;  import java.io.File;  import java.io.FileInputStream;  import java.io.IOExcepti