java网络图片与二进制字符串相互转换
- /**
- * @Title getImgeHexString
- * @Description 网络图片转换成二进制字符串
- * @param URLName 网络图片地址
- * @param type 图片类型
- * @return String 转换结果
- * @throws
- */
- public static String getImgeHexString(String URLName,String type) {
- String res = null;
- try {
- int HttpResult = 0; // 服务器返回的状态
- URL url = new URL(URLName); // 创建URL
- URLConnection urlconn = url.openConnection(); // 试图连接并取得返回状态码
- urlconn.connect();
- HttpURLConnection httpconn = (HttpURLConnection) urlconn;
- HttpResult = httpconn.getResponseCode();
- System.out.println(HttpResult);
- if (HttpResult != HttpURLConnection.HTTP_OK) // 不等于HTTP_OK则连接不成功
- System.out.print("fail");
- else {
- BufferedInputStream bis = new BufferedInputStream(urlconn.getInputStream());
- BufferedImage bm = ImageIO.read(bis);
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- ImageIO.write(bm, type, bos);
- bos.flush();
- byte[] data = bos.toByteArray();
- res = byte2hex(data);
- bos.close();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return res;
- }
- /**
- * @title 根据二进制字符串生成图片
- * @param data 生成图片的二进制字符串
- * @param fileName 图片名称(完整路径)
- * @param type 图片类型
- * @return
- */
- public static void saveImage(String data, String fileName,String type) {
- BufferedImage p_w_picpath = new BufferedImage(300, 300,BufferedImage.TYPE_BYTE_BINARY);
- ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
- try {
- ImageIO.write(p_w_picpath, type, byteOutputStream);
- // byte[] date = byteOutputStream.toByteArray();
- byte[] bytes = hex2byte(data);
- System.out.println("path:" + fileName);
- RandomAccessFile file = new RandomAccessFile(fileName, "rw");
- file.write(bytes);
- file.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- /**
- * 反格式化byte
- *
- * @param s
- * @return
- */
- public static byte[] hex2byte(String s) {
- byte[] src = s.toLowerCase().getBytes();
- byte[] ret = new byte[src.length / 2];
- for (int i = 0; i < src.length; i += 2) {
- byte hi = src[i];
- byte low = src[i + 1];
- hi = (byte) ((hi >= 'a' && hi <= 'f') ? 0x0a + (hi - 'a')
- : hi - '0');
- low = (byte) ((low >= 'a' && low <= 'f') ? 0x0a + (low - 'a')
- : low - '0');
- ret[i / 2] = (byte) (hi << 4 | low);
- }
- return ret;
- }
- /**
- * 格式化byte
- *
- * @param b
- * @return
- */
- public static String byte2hex(byte[] b) {
- char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
- 'B', 'C', 'D', 'E', 'F' };
- char[] out = new char[b.length * 2];
- for (int i = 0; i < b.length; i++) {
- byte c = b[i];
- out[i * 2] = Digit[(c >>> 4) & 0X0F];
- out[i * 2 + 1] = Digit[c & 0X0F];
- }
- return new String(out);
- }
转载于:https://blog.51cto.com/dreamboy/916888
java网络图片与二进制字符串相互转换相关推荐
- Gson案例:Java对象与JSON字符串相互转换
Gson案例:Java对象与JSON字符串相互转换 一.Gson概述 Gson是一个Java类库,可将Java对象转换为相应的JSON形式,也可以将JSON字符串转换为对应的Java对象.Gson是一 ...
- C++ 字节流与二进制字符串相互转换(一个简单的明文加解密程序)
1.想法由来 作为一名程序猿,在我们写文章.文字片段或者一句简短的话语,对外发表或者告之他人时,是否想过带点新意和创意呢?如果想过,那么这篇文章会给你一点帮助. 本文介绍的是一个简单的将明文与二进制字 ...
- mysql存图片二进制文件_将图片(二进制文件)存储于数据库,论文件字节流与二进制字符串相互转换...
开发中遇到存储图片文件于数据库这样的需求. 我们知道文件本身就是一份二进制数据,不同类型的文件只是编码形式不同,对应的解读形式不同,无论txt文件.jpg文件亦或是mp4文件,本质上都是0和1组成的. ...
- 使用jackson对Java对象与JSON字符串相互转换的一些总结
总结一下自己使用 jackson 处理对象与 JSON 之间相互转换的心得. jackson 是一个用 Java 编写的,用来处理 JSON 格式数据的类库,它速度非常快,目前来看使用很广泛,逐渐替代 ...
- java整型数组字符串相互转换,java数组与字符串相互转换、整型与字符串相互转换【详解】...
1.char数组(字符数组)->字符串 可以通过:使用String.copyValueOf(charArray)函数实现. 举例: char[] arr={'a','b','c'}; Strin ...
- java整数转二进制字符串_在Java中将int转换为二进制字符串表示形式?
AbbyPaden.. 5 这是我几分钟前刚写的东西.希望能帮助到你! public class Main { public static void main(String[] args) { Arr ...
- 【实用】Java对象与JSON字符串的互转,实用操作!
最近,工作中会涉及到Java对象与JSON字符串相互转换,虽然说并不难,但打算还是梳理一番,主要内容有: JSON 字符串 转 普通对象 普通对象 转 JSON 字符串 JSON 字符串数组 转 Li ...
- Java 二进制与十六进制字符串相互转换
1.二进制转十六进制 输入:二进制字符串 输出:十六进制字符串 public class Bin2Hex {public static void main(String[] args){String ...
- VB 二进制数组与十六进制字符串相互转换
1.VB 二进制Byte()数组转换成十六进制字符串函数: Private Function BytesToHex(bytB() As Byte) As String Dim strTmp As St ...
最新文章
- R语言成功加载rJava方法
- rnn按时间展开_作词家下岗系列:教你用 RNN 算法做一个写词软件
- ---WebCam网络摄像头7 cmos--yuv rgb , Format............:V4L2_PIX_FMT_YUYV
- 使用SoapUI调用安全WCF SOAP服务–第1部分,该服务
- Linux 如何加载并口/打印口驱动
- 音视频开发(32)---H.264/AVC 主流视频编码标准的发展
- freemarker开发指南
- Vue 获取验证码60s倒计时方法
- PHP中获取CHECKBOX提交的内容及checkbox全选
- 高质量响应式的 HTML/CSS 网站模板
- ppt格式刷快捷键_15个PPT神操作,让老师做课件的效率翻倍!
- (as3)右键菜单全屏与退出全屏的切换
- jenkins插件镜像源
- 山东大学软件学院计算机组成原理课程设计实验四
- 编译时内核栈溢出:the frame size of 1928 bytes is larger than 1024 bytes
- error C1041: 无法打开程序数据库“xxx\vc140.pdb”;如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用/FS
- 【更新】本地提权工具公开|CVE-2020-0796:微软发布SMBv3协议“蠕虫级”漏洞补丁通告
- Gitlab如何创建项目和添加成员
- 手风琴效果(vue实现)
- 【数据挖掘】-决策树算法+代码实现(七)