赞
踩
目录
以下代码仅用到外部包:fastjson-1.2.62.jar
百度网盘下载地址:链接:https://pan.baidu.com/s/1yHDYYg0AYzm76X1Tkyk5SQ
提取码:Json
这里传参的是本地的图片地址,后面会有删除本地图片的教程;作者没试过获取网页地址中的图片,大家可以自己尝试一下!
代码如下:
- /**
- * 图片转换为二进制流
- * @param imgaddress 图片本地地址
- * @return 返回图片转换后的二进制流(类型:String)
- * @return 若转换失败返回 null
- *
- * */
- public static String imgtoio(String imgaddress) {
- //图片转化为二进制
- byte[] imageBytes = null;
- try (FileInputStream fileInputStream = new FileInputStream(new File(imgaddress));)
- {
- imageBytes = new byte[fileInputStream.available()];
- fileInputStream.read(imageBytes);
- } catch (IOException e) {
- System.out.println(e);
- return null;
- }
- String str= UnicodeByteToStr(imageBytes);
- return str;
- }
将二进制流转化为字符串
- public static String UnicodeByteToStr(byte[] b){
- StringBuilder sb = new StringBuilder();
- for(int i=0;i<b.length;i++) {
- sb.append(String.format("%02x", b[i]));
- }
- return sb.toString();
- }
需要导入的包
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
由于我们保存的是String类型的字符窜,这里用到的是Java中
fileOutputStream.write()
方法,所以先要把字符串转换为byte[]类型(字节比int还小-128至127 (-27 to 27 - 1));方便我们进行图片转换;
代码如下:将字符串转换为byte[]类型;
- /**
- * @author P
- * 将字符串转换为byte[]类型
- * @param hexString 需要转换的字符串
- * @return byte[]类型二进制流
- *
- * */
- public static byte[] hex2Bytes(String hexString) {
- if (hexString == null || hexString.equals("")) {
- return null;
- }
- int length = hexString.length() / 2;
- char[] hexChars = hexString.toCharArray();
- byte[] bytes = new byte[length];
- String hexDigits = "0123456789abcdef";
- for (int i = 0; i < length; i++) {
- int pos = i * 2; // 两个字符对应一个byte
- int h = hexDigits.indexOf(hexChars[pos]) << 4; // 注1
- int l = hexDigits.indexOf(hexChars[pos + 1]); // 注2
- if(h == -1 || l == -1) { // 非16进制字符
- return null;
- }
- bytes[i] = (byte) (h | l);
- }
- return bytes;
- }
将byte[]的二进制流转换为图片:
- /**
- * @author P
- * 将二进制流转换为图片
- * @param imageBytes 二进制流(字符串)
- * @param imgaddress 图片保存地址【包括图片名称包含后缀】
- * @return 返回0(保存失败)返回1(保存成功)
- *
- * */
- public static int iotoimg(String imageBytes, String imgaddress) {
- //二进制转化为图片
- byte[] bytes1 = hex2Bytes(imageBytes);//字符串转换为byte
- try (FileOutputStream fileOutputStream = new FileOutputStream(new
- File(imgaddress));) {
- fileOutputStream.write(bytes1);//保存在本地
- return 1;
- } catch (IOException e) {
- System.out.println(e);
- return 0;
- }
- }
由此,图片的转换就算完成了,以上皆为自定义方法;借鉴网页中的其他大佬和本人自己的感悟和摸索总结而成,由于文章是在完成项目后进行编写的,所以没有转载链接;还望原作海涵!一下部分代码同上;
这里小作使用的小木果接口(用户登录)
Java获取接口内容(图片)并保存在本地文件中,并获取本地文件的二进制流,调用的方法上面有写!
- /**
- * 获取小木果接口中高清美女图片并保存在数据库中;
- * 高清图片一般无法保存在数据库,但是可以保存在本地
- * @param imgaddress1 保存地址【不含后缀】 如:E:\\\\桌面\\\\img
- *
- * */
- public static boolean setimgtomysql1(String imgaddress1){
- try {
- //种类
- String sort[]= {"未知","美女","汽车","二次元","背景","动漫"};
- int Intsort=1;//0-5 种类
- //小木果 随机图片链接1 不限制
- String interfaceID1="https://api.muxiaoguo.cn/api/meinvtu?num=1";
- //保存地址
- // String imgaddress1="E:\\桌面\\img";
- //判断链接是否保存图片成功
- Boolean boolean1=true;//链接1是否保存成功
-
- String nameps="\\"+Newname.getRandomName("gg.jpg");
- //获取网页中的图片并保存在本地
- boolean1=InterfaceImg.Ijson(1,interfaceID1,"data","imgurl",imgaddress1+nameps);
- // 获取图片的二进制流
- String imageBytes1=GetImgIo.imgtoio(imgaddress1+nameps);
-
- if(imageBytes1==null||!boolean1) {
- System.out.println("imageBytes2="+imageBytes1+";boolean2="+boolean1+"保存失败");
- return false;
- }
-
- //写入数据库
- //******
-
- new File(imgaddress1+nameps).delete();//删除保存在本地的图片
- return true;
- } catch (Exception e) {
- System.out.println("图片保存异常");
- System.out.println(e);
- return false;
- }
- }
new File("E:\one.txt").delete();//删除保存在本地的图片
传入需要删除的指定文件的本地绝对位置
部分代码转载来源于网络
喜欢的同学记得点个赞!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。