import java.io.BufferedInputStream;

import java.io.ByteArrayInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.UnsupportedEncodingException;

import java.net.URLDecoder;

import java.net.URLEncoder;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

import com.google.gson.Gson;

/**

* 辅助类

*

*/

public class Common

{

/**

* 字符串编码

*

* @param sStr

* @param sEnc

* @return String

*/

public final static String UrlEncoder(String sStr, String sEnc)

{

String sReturnCode = "";

try

{

sReturnCode = URLEncoder.encode(sStr, sEnc);

}

catch (UnsupportedEncodingException ex)

{

}

return sReturnCode;

}

/**

* 字符串解码

*

* @param sStr

* @param sEnc

* @return String

*/

public final static String UrlDecoder(String sStr, String sEnc)

{

String sReturnCode = "";

try

{

sReturnCode = URLDecoder.decode(sStr, sEnc);

}

catch (UnsupportedEncodingException ex)

{

}

return sReturnCode;

}

/**

* 将模型进行JSON编码

*

* @param obModel

* @return String

*/

public final static String JSONEncode(Object obModel)

{

Gson gson = new Gson();

return gson.toJson(obModel);

}

/**

* 将模型进行JSON解码

*

* @param sJson

* @param classOfT

* @return Object

*/

@SuppressWarnings("unchecked")

public final static Object JSONDecode(String sJson, Class classOfT)

{

Gson gson = new Gson();

return gson.fromJson(sJson, classOfT);

}

/**

* 将模型列表进行JSON解码

*

* @param sJson

* @return List<Object>

*/

@SuppressWarnings("unchecked")

public final static List<Object> JSONDecodeList(String sJson, Class classOfT)

{

if (sJson.equals("[]"))

{

return null;

}

List<String> lstsfs = dealJsonStr(sJson);

List<Object> lst = new ArrayList<Object>();

for (String str : lstsfs)

{

// 使用JSON作为传输

Object o = JSONDecode(str, classOfT);

lst.add(o);

}

return lst;

}

/**

* 将json列表转换为字符串列表,每个字符串为一个对象

*

* @param json

* @return List<String>

*/

public static List<String> dealJsonStr(String json)

{

String[] sfs = json.split("},");

List<String> lst = new ArrayList<String>();

for (String str : sfs)

{

str = str.trim();

if (str.startsWith("["))

{

str = str.substring(1);

}

else if (str.startsWith("{"))

{

}

else

{

str = "{" + str;

}

if (str.endsWith("]"))

{

str = str.substring(0, str.length() - 1);

}

else if (str.endsWith("}"))

{

}

else

{

str += "}";

}

lst.add(str);

}

return lst;

}

/**

* 将接收的字符串转换成图片保存

*

* @param imgStr

*            二进制流转换的字符串

* @param imgPath

*            图片的保存路径

* @param imgName

*            图片的名称

* @return 1:保存正常 0:保存失败

*/

public static int saveToImgByStr(String imgStr, String imgPath, String imgName)

{

int stateInt = 1;

try

{

// System.out.println("===imgStr.length()====>" + imgStr.length() + "=====imgStr=====>" + imgStr);

File savedir = new File(imgPath);

if (!savedir.exists())

{

savedir.mkdirs();

}

if (imgStr != null && imgStr.length() > 0)

{

// 将字符串转换成二进制,用于显示图片

// 将上面生成的图片格式字符串 imgStr,还原成图片显示

byte[] imgByte = hex2byte(imgStr);

InputStream in = new ByteArrayInputStream(imgByte);

File file = new File(imgPath, imgName);// 可以是任何图片格式.jpg,.png等

FileOutputStream fos = new FileOutputStream(file);

byte[] b = new byte[1024];

int nRead = 0;

while ((nRead = in.read(b)) != -1)

{

fos.write(b, 0, nRead);

}

fos.flush();

fos.close();

in.close();

}

}

catch (Exception e)

{

stateInt = 0;

e.printStackTrace();

}

return stateInt;

}

/**

* 将二进制转换成图片保存

*

* @param imgStr

*            二进制流转换的字符串

* @param imgPath

*            图片的保存路径

* @param imgName

*            图片的名称

* @return 1:保存正常 0:保存失败

*/

public static int saveToImgByBytes(File imgFile, String imgPath, String imgName)

{

int stateInt = 1;

if (imgFile.length() > 0)

{

try

{

File savedir = new File(imgPath);

if (!savedir.exists())

{

savedir.mkdirs();

}

File file = new File(imgPath, imgName);// 可以是任何图片格式.jpg,.png等

FileOutputStream fos = new FileOutputStream(file);

FileInputStream fis = new FileInputStream(imgFile);

byte[] b = new byte[1024];

int nRead = 0;

while ((nRead = fis.read(b)) != -1)

{

fos.write(b, 0, nRead);

}

fos.flush();

fos.close();

fis.close();

}

catch (Exception e)

{

stateInt = 0;

e.printStackTrace();

}

finally

{

}

}

return stateInt;

}

/**

* 将图片转换成二进制

*

* @param imgPath

* @param imgName

* @return

*/

public static byte[] saveToBytesByImg(File file)

{

byte[] by = null;

try

{

FileInputStream fis = new FileInputStream(file);

BufferedInputStream bis = new BufferedInputStream(fis);

by = new byte[fis.available()];

bis.read(by);

fis.close();

bis.close();

}

catch (Exception e)

{

e.printStackTrace();

}

return by;

}

/**

* 将图片转换成字符串

*

* @param imgPath

* @param imgName

* @return

*/

public static String saveToStrByImg(File file)

{

String result = "";

try

{

byte[] by = saveToBytesByImg(file);

result = byte2hex(by);

}

catch (Exception e)

{

e.printStackTrace();

}

return result;

}

/**

* 二进制转字符串

*

* @param b

* @return

*/

public static String byte2hex(byte[] b) // 二进制转字符串

{

StringBuffer sb = new StringBuffer();

String stmp = "";

for (int n = 0; n < b.length; n++)

{

stmp = Integer.toHexString(b[n] & 0XFF);

if (stmp.length() == 1)

{

sb.append("0" + stmp);

}

else

{

sb.append(stmp);

}

}

return sb.toString();

}

/**

* 字符串转二进制

*

* @param str

*            要转换的字符串

* @return 转换后的二进制数组

*/

public static byte[] hex2byte(String str)

{ // 字符串转二进制

if (str == null)

return null;

str = str.trim();

int len = str.length();

if (len == 0 || len % 2 == 1)

return null;

byte[] b = new byte[len / 2];

try

{

for (int i = 0; i < str.length(); i += 2)

{

b[i / 2] = (byte) Integer.decode("0X" + str.substring(i, i + 2)).intValue();

}

return b;

}

catch (Exception e)

{

return null;

}

}

public static String getRandomNum(int length)

{

try

{

if (length <= 0)

{

return "";

}

Random r = new Random();

StringBuffer result = new StringBuffer();

for (int i = 0; i < length; i++)

{

result.append(Integer.toString(r.nextInt(10)));

}

return result.toString();

}

catch (Exception ex)

{

ex.printStackTrace();

return null;

}

}

}

Gson字符串编码,字符串转换成图片保存,二进制转换成图片保存的更多相关文章

  1. php从数据库中取二进制流文件转换为图片,图片以二进制流存入数据库实现

    php从数据库中取二进制流文件转换为图片,图片以二进制流存入数据库实现 function data_uri($contents, $mime) { $base64 = base64_encode($c ...

  2. c# 读数据库二进制流到图片

    public Bitmap PictureShow(string connectionString, string opName, string productType)        {       ...

  3. 图片和base64编码字符串 互相转换,图片和byte数组互相转换

    图片和base64编码字符串 互相转换 import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.io.*; ...

  4. Gson解析json字符串、json数组转换成对象

    实体类: public class Product { private int id; private String name; private String date; public int get ...

  5. SphinxJS——把字符串编码成png图片的超轻量级开源库

    体验地址:https://jrainlau.github.io/sp...项目地址:https://github.com/jrainlau/s... SphinxJS 一个能够把字符串编码成png图片 ...

  6. 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间

    生成二维码 /// <summary>/// 生成二维码/// </summary>public static class QRcodeUtils{private static ...

  7. c# 图片转二进制/字符串 二进制/字符串反转成图片

    protected void Button1_Click(object sender, EventArgs e) { //图片转二进制 byte[] imageByte = GetPictureDat ...

  8. Qt5字符串编码转换学习

    目录 1.通过Python3示例探索常用字符串编码 UTF8 ANSI Unicode 小结 2.Qt5中使用QTextCodec进行编码转换 小结 1.通过Python3示例探索常用字符串编码 下面 ...

  9. 普通字符串与Hex编码字符串之间转换

    import java.io.UnsupportedEncodingException; import org.apache.commons.codec.binary.Hex; public clas ...

随机推荐

  1. FreeBSD安装后使用su命令显示sorry的解决办法

    FreeBSD中,可以使用su命令成为root用户,但FreeBSD对执行su命令的用户进行了更严格的限制,能使用su命令的用户必须属于wheel组(root的基本属组,组ID为0),否则就不能通过 ...

  2. MySQL数据库扫盲篇

    MySQL数据库扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.MySQL概述 1>.什么是MySQL MySQL是瑞典的MySQL AB公司开发的一个可用于各 ...

  3. CyclicBarrier 使用详解

    原文:https://www.jianshu.com/p/333fd8faa56e 1. CyclicBarrier 是什么? 从字面上的意思可以知道,这个类的中文意思是“循环栅栏”.大概的意思就是一 ...

  4. 如何将scratch3.0的作业自动提交到后台数据库

    大家都知道Scratch3.0开发后,默认是可以下载文件到电脑,但是如果是作为商业系统来说,我们需要将作业自动的提交到后台,因此有了这篇文章. 首先,我们来分解下开发步骤: 1.在菜单栏新增一个上传到 ...

  5. oracle获取时间段之间的所有日期

    SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2014-10', 'yyyy-MM'), ROWNUM - 1), 'yyyy-MM') as monthlist FROM D ...

  6. 模型融合---CatBoost 调参总结

    一.参数速查 1.通用参数 2.性能参数 3.处理单元设置 二.分类 三.回归

  7. 2019安徽省程序设计竞赛 D.自驾游(最短路)

    这道题最后没过,估计是痛失省一了,现在来补一下,当时思路是对的应该是代码出了问题导致样例没过最后nc的除了2,一直WA 题意: 给一张联通图,有两个导航系统,其中一个系统认为第i条边的权值是Pi,另一 ...

  8. CefSharp 与 js 相互调用及注意事项

    CefSharp 与 js 相互调用 一. CefSharp调用 js CefSharp.WinForms.ChromiumWebBrowser wb; ... 方式1. ExecuteScriptA ...

  9. js添加触摸时间,禁止页面缩放

    <meta name="viewport" content="target-densitydpi=320,width=640,user-scalable=no&qu ...

  10. select 与 I/O多路转接

    参考博客:http://blog.sina.com.cn/s/blog_607072980102uxcw.html I/0多路转接: 描述符表示某个I/O.构造一张有关描述符的数据表,调用select ...