目录

一、图片互转二进制流

1、图片转二进制流;

2、二进制转图片并保存在本地

二、获取图片接口

三、删除本地指定文件


下载包

        以下代码仅用到外部包:fastjson-1.2.62.jar

        百度网盘下载地址:链接:https://pan.baidu.com/s/1yHDYYg0AYzm76X1Tkyk5SQ 
        提取码:Json

一、图片互转二进制流

1、图片转二进制流;

        这里传参的是本地的图片地址,后面会有删除本地图片的教程;作者没试过获取网页地址中的图片,大家可以自己尝试一下!

代码如下:

/** 
	 * 图片转换为二进制流
	 * @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;

2、二进制转图片并保存在本地

由于我们保存的是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();//删除保存在本地的图片

传入需要删除的指定文件的本地绝对位置

喜欢的同学记得点个赞!