1. /**
  2. * @Title           getImgeHexString
  3. * @Description     网络图片转换成二进制字符串
  4. * @param URLName   网络图片地址
  5. * @param type      图片类型
  6. * @return  String  转换结果
  7. * @throws
  8. */
  9. public static String getImgeHexString(String URLName,String type) {
  10. String res = null;
  11. try {
  12. int HttpResult = 0; // 服务器返回的状态
  13. URL url = new URL(URLName); // 创建URL
  14. URLConnection urlconn = url.openConnection(); // 试图连接并取得返回状态码
  15. urlconn.connect();
  16. HttpURLConnection httpconn = (HttpURLConnection) urlconn;
  17. HttpResult = httpconn.getResponseCode();
  18. System.out.println(HttpResult);
  19. if (HttpResult != HttpURLConnection.HTTP_OK) // 不等于HTTP_OK则连接不成功
  20. System.out.print("fail");
  21. else {
  22. BufferedInputStream bis = new BufferedInputStream(urlconn.getInputStream());
  23. BufferedImage bm = ImageIO.read(bis);
  24. ByteArrayOutputStream bos = new ByteArrayOutputStream();
  25. ImageIO.write(bm, type, bos);
  26. bos.flush();
  27. byte[] data = bos.toByteArray();
  28. res = byte2hex(data);
  29. bos.close();
  30. }
  31. } catch (Exception e) {
  32. e.printStackTrace();
  33. }
  34. return res;
  35. }
  36. /**
  37. * @title           根据二进制字符串生成图片
  38. * @param data      生成图片的二进制字符串
  39. * @param fileName  图片名称(完整路径)
  40. * @param type      图片类型
  41. * @return
  42. */
  43. public static void saveImage(String data, String fileName,String type) {
  44. BufferedImage p_w_picpath = new BufferedImage(300, 300,BufferedImage.TYPE_BYTE_BINARY);
  45. ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
  46. try {
  47. ImageIO.write(p_w_picpath, type, byteOutputStream);
  48. // byte[] date = byteOutputStream.toByteArray();
  49. byte[] bytes = hex2byte(data);
  50. System.out.println("path:" + fileName);
  51. RandomAccessFile file = new RandomAccessFile(fileName, "rw");
  52. file.write(bytes);
  53. file.close();
  54. } catch (IOException e) {
  55. e.printStackTrace();
  56. }
  57. }
  58. /**
  59. * 反格式化byte
  60. *
  61. * @param s
  62. * @return
  63. */
  64. public static byte[] hex2byte(String s) {
  65. byte[] src = s.toLowerCase().getBytes();
  66. byte[] ret = new byte[src.length / 2];
  67. for (int i = 0; i < src.length; i += 2) {
  68. byte hi = src[i];
  69. byte low = src[i + 1];
  70. hi = (byte) ((hi >= 'a' && hi <= 'f') ? 0x0a + (hi - 'a')
  71. : hi - '0');
  72. low = (byte) ((low >= 'a' && low <= 'f') ? 0x0a + (low - 'a')
  73. : low - '0');
  74. ret[i / 2] = (byte) (hi << 4 | low);
  75. }
  76. return ret;
  77. }
  78. /**
  79. * 格式化byte
  80. *
  81. * @param b
  82. * @return
  83. */
  84. public static String byte2hex(byte[] b) {
  85. char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
  86. 'B', 'C', 'D', 'E', 'F' };
  87. char[] out = new char[b.length * 2];
  88. for (int i = 0; i < b.length; i++) {
  89. byte c = b[i];
  90. out[i * 2] = Digit[(c >>> 4) & 0X0F];
  91. out[i * 2 + 1] = Digit[c & 0X0F];
  92. }
  93. return new String(out);
  94. }

转载于:https://blog.51cto.com/dreamboy/916888

java网络图片与二进制字符串相互转换相关推荐

  1. Gson案例:Java对象与JSON字符串相互转换

    Gson案例:Java对象与JSON字符串相互转换 一.Gson概述 Gson是一个Java类库,可将Java对象转换为相应的JSON形式,也可以将JSON字符串转换为对应的Java对象.Gson是一 ...

  2. C++ 字节流与二进制字符串相互转换(一个简单的明文加解密程序)

    1.想法由来 作为一名程序猿,在我们写文章.文字片段或者一句简短的话语,对外发表或者告之他人时,是否想过带点新意和创意呢?如果想过,那么这篇文章会给你一点帮助. 本文介绍的是一个简单的将明文与二进制字 ...

  3. mysql存图片二进制文件_将图片(二进制文件)存储于数据库,论文件字节流与二进制字符串相互转换...

    开发中遇到存储图片文件于数据库这样的需求. 我们知道文件本身就是一份二进制数据,不同类型的文件只是编码形式不同,对应的解读形式不同,无论txt文件.jpg文件亦或是mp4文件,本质上都是0和1组成的. ...

  4. 使用jackson对Java对象与JSON字符串相互转换的一些总结

    总结一下自己使用 jackson 处理对象与 JSON 之间相互转换的心得. jackson 是一个用 Java 编写的,用来处理 JSON 格式数据的类库,它速度非常快,目前来看使用很广泛,逐渐替代 ...

  5. java整型数组字符串相互转换,java数组与字符串相互转换、整型与字符串相互转换【详解】...

    1.char数组(字符数组)->字符串 可以通过:使用String.copyValueOf(charArray)函数实现. 举例: char[] arr={'a','b','c'}; Strin ...

  6. java整数转二进制字符串_在Java中将int转换为二进制字符串表示形式?

    AbbyPaden.. 5 这是我几分钟前刚写的东西.希望能帮助到你! public class Main { public static void main(String[] args) { Arr ...

  7. 【实用】Java对象与JSON字符串的互转,实用操作!

    最近,工作中会涉及到Java对象与JSON字符串相互转换,虽然说并不难,但打算还是梳理一番,主要内容有: JSON 字符串 转 普通对象 普通对象 转 JSON 字符串 JSON 字符串数组 转 Li ...

  8. Java 二进制与十六进制字符串相互转换

    1.二进制转十六进制 输入:二进制字符串 输出:十六进制字符串 public class Bin2Hex {public static void main(String[] args){String ...

  9. VB 二进制数组与十六进制字符串相互转换

    1.VB 二进制Byte()数组转换成十六进制字符串函数: Private Function BytesToHex(bytB() As Byte) As String Dim strTmp As St ...

最新文章

  1. R语言成功加载rJava方法
  2. rnn按时间展开_作词家下岗系列:教你用 RNN 算法做一个写词软件
  3. ---WebCam网络摄像头7 cmos--yuv rgb , Format............:V4L2_PIX_FMT_YUYV
  4. 使用SoapUI调用安全WCF SOAP服务–第1部分,该服务
  5. Linux 如何加载并口/打印口驱动
  6. 音视频开发(32)---H.264/AVC 主流视频编码标准的发展
  7. freemarker开发指南
  8. Vue 获取验证码60s倒计时方法
  9. PHP中获取CHECKBOX提交的内容及checkbox全选
  10. 高质量响应式的 HTML/CSS 网站模板
  11. ppt格式刷快捷键_15个PPT神操作,让老师做课件的效率翻倍!
  12. (as3)右键菜单全屏与退出全屏的切换
  13. jenkins插件镜像源
  14. 山东大学软件学院计算机组成原理课程设计实验四
  15. 编译时内核栈溢出:the frame size of 1928 bytes is larger than 1024 bytes
  16. error C1041: 无法打开程序数据库“xxx\vc140.pdb”;如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用/FS
  17. 【更新】本地提权工具公开|CVE-2020-0796:微软发布SMBv3协议“蠕虫级”漏洞补丁通告
  18. Gitlab如何创建项目和添加成员
  19. 手风琴效果(vue实现)
  20. 【数据挖掘】-决策树算法+代码实现(七)

热门文章

  1. OLW (Open Live Writer)安装代码高亮插件方法(简明)
  2. 理解Storm Metrics
  3. 【SGU】SGU每日练1·Little shop of flowers【DP】
  4. mysql服务器设置其他电脑访问
  5. TcxComboBox控件说明
  6. Java Runtime.exec()的使用
  7. [转]如何完美应对面试
  8. [技术回顾系列]--认识WebService全貌
  9. 干货:用Python玩转数据可视化,炫酷图表是这样做出来的
  10. Cortex-M3异常