当前位置:首页 > Java技术 > Java常用工具类---image图片处理工具类、Json工具类

Java常用工具类---image图片处理工具类、Json工具类

2022年08月06日 11:20:20Java技术2
package com.jarvis.base.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import net.coobird.thumbnailator.Thumbnails;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 *   
 * 
 * @Title: ImageHelper.java
 * @Package com.jarvis.base.util
 * @Description:图片处理工具类。
 * @version V1.0  
 */
@SuppressWarnings("restriction")
public class ImageHelper {
	/**
	 * @描述:Base64解码并生成图片
	 * @入参:@param imgStr
	 * @入参:@param imgFile
	 * @入参:@throws IOException
	 * @出参:void
	 */
	public static void generateImage(String imgStr, String imgFile) throws IOException {
		BASE64Decoder decoder = new BASE64Decoder();
		// Base64解码
		byte[] bytes;
		OutputStream out = null;
		try {
			bytes = decoder.decodeBuffer(imgStr);
			for (int i = 0; i < bytes.length; ++i) {
				if (bytes[i] < 0) {// 调整异常数据
					bytes[i] += 256;
				}
			}
			// 生成图片
			out = new FileOutputStream(imgFile);
			out.write(bytes);
			out.flush();
		} catch (IOException e) {
			throw new IOException();
		} finally {
			if (out != null) {
				try {
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

	}

	/**
	 * @throws IOException
	 * @描述:根据路径得到base编码后图片
	 * @入参:@param imgFilePath
	 * @入参:@return
	 * @出参:String
	 */
	public static String getImageStr(String imgFilePath) throws IOException {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
		byte[] data = null;

		// 读取图片字节数组
		try {
			InputStream in = new FileInputStream(imgFilePath);
			data = new byte[in.available()];
			in.read(data);
			in.close();
		} catch (IOException e) {
			throw new IOException();
		}

		// 对字节数组Base64编码
		BASE64Encoder encoder = new BASE64Encoder();
		return encoder.encode(data);// 返回Base64编码过的字节数组字符串
	}

	/**
	 * @throws IOException
	 * @描述:图片旋转
	 * @入参:@param base64In 传入的图片base64
	 * @入参:@param angle 图片旋转度数
	 * @入参:@throws Exception
	 * @出参:String 传出的图片base64
	 */
	public static String imgAngleRevolve(String base64In, int angle) throws IOException {
		ByteArrayOutputStream os = new ByteArrayOutputStream();
		try {
			Thumbnails.of(base64ToIo(base64In)).scale(1.0).rotate(angle).toOutputStream(os);
		} catch (IOException e) {
			throw new IOException();
		}
		byte[] bs = os.toByteArray();
		String s = new BASE64Encoder().encode(bs);
		return s;
	}

	/**
	 * @描述:base64转为io流
	 * @入参:@param strBase64
	 * @入参:@return
	 * @入参:@throws IOException
	 * @出参:InputStream
	 */
	public static InputStream base64ToIo(String strBase64) throws IOException {
		// 解码,然后将字节转换为文件
		byte[] bytes = new BASE64Decoder().decodeBuffer(strBase64); // 将字符串转换为byte数组
		return new ByteArrayInputStream(bytes);
	}
}







package com.jarvis.base.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.JSONLibDataFormatSerializer;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;

/**
 *   
 * 
 * @Title: FastJsonUtil.java
 * @Package com.jarvis.base.util
 * @Description:fastjson工具类
 * @version V1.0  
 */
public class FastJsonUtil {

	private static final SerializeConfig config;

	static {
		config = new SerializeConfig();
		config.put(java.util.Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式
		config.put(java.sql.Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式
	}

	private static final SerializerFeature[] features = { SerializerFeature.WriteMapNullValue, // 输出空置字段
			SerializerFeature.WriteNullListAsEmpty, // list字段如果为null,输出为[],而不是null
			SerializerFeature.WriteNullNumberAsZero, // 数值字段如果为null,输出为0,而不是null
			SerializerFeature.WriteNullBooleanAsFalse, // Boolean字段如果为null,输出为false,而不是null
			SerializerFeature.WriteNullStringAsEmpty, // 字符类型字段如果为null,输出为"",而不是null
			SerializerFeature.PrettyFormat  //是否需要格式化输出Json数据
	};

	/**
	 * @param object
	 * @return Return:String Description:将对象转成成Json对象
	 */
	public static String toJSONString(Object object) {
		return JSON.toJSONString(object, config, features);
	}

	/**
	 * @param object
	 * @return Return:String Description:使用和json-lib兼容的日期输出格式
	 */
	public static String toJSONNoFeatures(Object object) {
		return JSON.toJSONString(object, config);
	}

	/**
	 * @param jsonStr
	 * @return Return:Object Description:将Json数据转换成JSONObject
	 */
	public static JSONObject toJsonObj(String jsonStr) {
		return (JSONObject) JSON.parse(jsonStr);
	}
	
	/**
	 * @param jsonStr
	 * @param clazz
	 * @return Return:T Description:将Json数据转换成Object
	 */
	public static <T> T toBean(String jsonStr, Class<T> clazz) {
		return JSON.parseObject(jsonStr, clazz);
	}

	/**
	 * @param jsonStr
	 * @return Return:Object[] Description:将Json数据转换为数组
	 */
	public static <T> Object[] toArray(String jsonStr) {
		return toArray(jsonStr, null);
	}

	/**
	 * @param jsonStr
	 * @param clazz
	 * @return Return:Object[] Description:将Json数据转换为数组
	 */
	public static <T> Object[] toArray(String jsonStr, Class<T> clazz) {
		return JSON.parseArray(jsonStr, clazz).toArray();
	}

	/**
	 * @param jsonStr
	 * @param clazz
	 * @return Return:List<T> Description:将Json数据转换为List
	 */
	public static <T> List<T> toList(String jsonStr, Class<T> clazz) {
		return JSON.parseArray(jsonStr, clazz);
	}

	/**
	 * 将javabean转化为序列化的JSONObject对象
	 * 
	 * @param keyvalue
	 * @return
	 */
	public static JSONObject beanToJsonObj(Object bean) {
		String jsonStr = JSON.toJSONString(bean);
		JSONObject objectJson = (JSONObject) JSON.parse(jsonStr);
		return objectJson;
	}
	/**
	 * json字符串转化为map
	 * 
	 * @param s
	 * @return
	 */
	public static Map<?, ?> stringToCollect(String jsonStr) {
		Map<?, ?> map = JSONObject.parseObject(jsonStr);
		return map;
	}

	/**
	 * 将map转化为string
	 * 
	 * @param m
	 * @return
	 */
	public static String collectToString(Map<?, ?> map) {
		String jsonStr = JSONObject.toJSONString(map);
		return jsonStr;
	}

	/**
	 * @param t
	 * @param file
	 * @throws IOException
	 *             Return:void Description:将对象的Json数据写入文件。
	 */
	public static <T> void writeJsonToFile(T t, File file) throws IOException {
		String jsonStr = JSONObject.toJSONString(t, SerializerFeature.PrettyFormat);
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
		bw.write(jsonStr);
		bw.close();
	}

	/**
	 * @param t
	 * @param filename
	 * @throws IOException
	 *             Return:void Description:将对象的Json数据写入文件。
	 */
	public static <T> void writeJsonToFile(T t, String filename) throws IOException {
		writeJsonToFile(t, new File(filename));
	}

	/**
	 * @param cls
	 * @param file
	 * @return
	 * @throws IOException
	 *             Return:T Description:将文件中的Json数据转换成Object对象
	 */
	public static <T> T readJsonFromFile(Class<T> cls, File file) throws IOException {
		StringBuilder strBuilder = new StringBuilder();
		BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
		String line = null;
		while ((line = br.readLine()) != null) {
			strBuilder.append(line);
		}
		br.close();
		return JSONObject.parseObject(strBuilder.toString(), cls);
	}

	/**
	 * Author:Jack Time:2017年9月2日下午4:22:30
	 * 
	 * @param cls
	 * @param filename
	 * @return
	 * @throws IOException
	 *             Return:T Description:将文件中的Json数据转换成Object对象
	 */
	public static <T> T readJsonFromFile(Class<T> cls, String filename) throws IOException {
		return readJsonFromFile(cls, new File(filename));
	}

	/**
	 * Author:Jack Time:2017年9月2日下午4:23:06
	 * 
	 * @param typeReference
	 * @param file
	 * @return
	 * @throws IOException
	 *             Return:T Description:从文件中读取出Json对象
	 */
	public static <T> T readJsonFromFile(TypeReference<T> typeReference, File file) throws IOException {
		StringBuilder strBuilder = new StringBuilder();
		BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
		String line = null;
		while ((line = br.readLine()) != null) {
			strBuilder.append(line);
		}
		br.close();
		return JSONObject.parseObject(strBuilder.toString(), typeReference);
	}

	/**
	 * Author:Jack Time:2017年9月2日下午4:23:11
	 * 
	 * @param typeReference
	 * @param filename
	 * @return
	 * @throws IOException
	 *             Return:T Description:从文件中读取出Json对象
	 */
	public static <T> T readJsonFromFile(TypeReference<T> typeReference, String filename) throws IOException {
		return readJsonFromFile(typeReference, new File(filename));
	}

}

  

原文:https://blog.csdn.net/zhang150114/article/details/90411800

作者:持剑走天涯
来源链接:https://www.cnblogs.com/qbdj/p/10974692.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/18250.html

分享给朋友:

“Java常用工具类---image图片处理工具类、Json工具类” 的相关文章

183 01 Android 零基础入门  03 Java常用工具类03 Java字符串 02 String类 03 String常用方法(下)

183 01 Android 零基础入门 03 Java常用工具类03 Java字符串 02 String类 03 String常用方法(下)

183 01 Android 零基础入门 03 Java常用工具类03 Java字符串 02 String类 03 String常用方法(下) 本文知识点: String常用方法(下) 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤...

MD5工具类(java实现版)

MD5工具类(java实现版) 介绍 MD5(Message Digest Algorithm)加密算法是不对称的加密算法,因为其实不可逆的,实际上其不能算作加密算法, 因为其不可解密。其实现原理是基于Hash算法(简称散列函数)。...

Java IO工具类常用方法

常用的文件操作:包括文件拷贝、HTTP方式拷贝、文件下载等。  1.创建文件夹 /** * 创建文件夹 * @filePath:路径 */ public void MakeFolder(String folderPath){ File fi...

12款最常用的Java测试工具

Parasoft Jtest Jtest是Parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。 Abbot Abbot是一款测试Java GUIs的JUnit扩展程序...

java学习~Arrays工具类

Arrays工具类Arrays类的概述及其常用的方法1、位于java.util包中2、概述:Arrays类是针对数组进行操作的工具类,提供了排序和查找等功能3、常用的方法: 1、public static String toString(int [] a)   作用:将任意类型的...

JAVA常用工具类记录

JAVA常用工具类记录 新旧知识 常用 工具类 JAVA 15747979 一、JDK 工具类...

209 01 Android 零基础入门  03 Java常用工具类 04 Java集合 05 集合总结 01 集合知识点总结

209 01 Android 零基础入门 03 Java常用工具类 04 Java集合 05 集合总结 01 集合知识点总结

209 01 Android 零基础入门 03 Java常用工具类 04 Java集合 05 集合总结 01 集合知识点总结 本文知识点:集合知识点总结 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间...

Java Zip 基于内存实现压缩和解压 附可用工具类

Java Zip 基于内存实现压缩和解压 附可用工具类

欢迎大家关注本博,同时欢迎大家评论交流,可以给个赞哦!!!   Zip是常用的无损压缩算法实现,Java中提供了Zip的实现,本文演示基于内存的方式进行压缩和解压,演示只针对一层目录结构进行,多层目录只需递归操作进行即可。...

JAVA常用的工具类

JAVA常用的工具类

目录 1 集合工具类 1.1 java.util.Collections 1.1.1 基本操作 1.1.2 转换线程安全集合 1.2 org.springframework.util.CollectionUtils 1.3&...

扩展:JAVA 常用框架和工具思维导图

扩展:JAVA 常用框架和工具思维导图

作者:He BianGu 来源链接:https://blog.csdn.net/u010975589/article/details/80885509...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。