当前位置:   article > 正文

Java处理图片-图片互转二进制流-保存网页中的图片到本地-删除本地文件-图片接口-详解过程中的问题_java图片转二进制流

java图片转二进制流

目录

一、图片互转二进制流

1、图片转二进制流;

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

二、获取图片接口

三、删除本地指定文件


下载包

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

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

一、图片互转二进制流

1、图片转二进制流;

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

代码如下:

  1. /**
  2. * 图片转换为二进制流
  3. * @param imgaddress 图片本地地址
  4. * @return 返回图片转换后的二进制流(类型:String)
  5. * @return 若转换失败返回 null
  6. *
  7. * */
  8. public static String imgtoio(String imgaddress) {
  9. //图片转化为二进制
  10. byte[] imageBytes = null;
  11. try (FileInputStream fileInputStream = new FileInputStream(new File(imgaddress));)
  12. {
  13. imageBytes = new byte[fileInputStream.available()];
  14. fileInputStream.read(imageBytes);
  15. } catch (IOException e) {
  16. System.out.println(e);
  17. return null;
  18. }
  19. String str= UnicodeByteToStr(imageBytes);
  20. return str;
  21. }

将二进制流转化为字符串

  1. public static String UnicodeByteToStr(byte[] b){
  2. StringBuilder sb = new StringBuilder();
  3. for(int i=0;i<b.length;i++) {
  4. sb.append(String.format("%02x", b[i]));
  5. }
  6. return sb.toString();
  7. }

需要导入的包

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;

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

由于我们保存的是String类型的字符窜,这里用到的是Java中

fileOutputStream.write()

方法,所以先要把字符串转换为byte[]类型(字节比int还小-128至127 (-27 to 27 - 1));方便我们进行图片转换;

代码如下:将字符串转换为byte[]类型;

  1. /**
  2. * @author P
  3. * 将字符串转换为byte[]类型
  4. * @param hexString 需要转换的字符串
  5. * @return byte[]类型二进制流
  6. *
  7. * */
  8. public static byte[] hex2Bytes(String hexString) {
  9. if (hexString == null || hexString.equals("")) {
  10. return null;
  11. }
  12. int length = hexString.length() / 2;
  13. char[] hexChars = hexString.toCharArray();
  14. byte[] bytes = new byte[length];
  15. String hexDigits = "0123456789abcdef";
  16. for (int i = 0; i < length; i++) {
  17. int pos = i * 2; // 两个字符对应一个byte
  18. int h = hexDigits.indexOf(hexChars[pos]) << 4; // 注1
  19. int l = hexDigits.indexOf(hexChars[pos + 1]); // 注2
  20. if(h == -1 || l == -1) { // 非16进制字符
  21. return null;
  22. }
  23. bytes[i] = (byte) (h | l);
  24. }
  25. return bytes;
  26. }

将byte[]的二进制流转换为图片:

  1. /**
  2. * @author P
  3. * 将二进制流转换为图片
  4. * @param imageBytes 二进制流(字符串)
  5. * @param imgaddress 图片保存地址【包括图片名称包含后缀】
  6. * @return 返回0(保存失败)返回1(保存成功)
  7. *
  8. * */
  9. public static int iotoimg(String imageBytes, String imgaddress) {
  10. //二进制转化为图片
  11. byte[] bytes1 = hex2Bytes(imageBytes);//字符串转换为byte
  12. try (FileOutputStream fileOutputStream = new FileOutputStream(new
  13. File(imgaddress));) {
  14. fileOutputStream.write(bytes1);//保存在本地
  15. return 1;
  16. } catch (IOException e) {
  17. System.out.println(e);
  18. return 0;
  19. }
  20. }

由此,图片的转换就算完成了,以上皆为自定义方法;借鉴网页中的其他大佬和本人自己的感悟和摸索总结而成,由于文章是在完成项目后进行编写的,所以没有转载链接;还望原作海涵!一下部分代码同上;

二、获取图片接口

  这里小作使用的小木果接口(用户登录

Java获取接口内容(图片)并保存在本地文件中,并获取本地文件的二进制流,调用的方法上面有写!

  1. /**
  2. * 获取小木果接口中高清美女图片并保存在数据库中;
  3. * 高清图片一般无法保存在数据库,但是可以保存在本地
  4. * @param imgaddress1 保存地址【不含后缀】 如:E:\\\\桌面\\\\img
  5. *
  6. * */
  7. public static boolean setimgtomysql1(String imgaddress1){
  8. try {
  9. //种类
  10. String sort[]= {"未知","美女","汽车","二次元","背景","动漫"};
  11. int Intsort=1;//0-5 种类
  12. //小木果 随机图片链接1 不限制
  13. String interfaceID1="https://api.muxiaoguo.cn/api/meinvtu?num=1";
  14. //保存地址
  15. // String imgaddress1="E:\\桌面\\img";
  16. //判断链接是否保存图片成功
  17. Boolean boolean1=true;//链接1是否保存成功
  18. String nameps="\\"+Newname.getRandomName("gg.jpg");
  19. //获取网页中的图片并保存在本地
  20. boolean1=InterfaceImg.Ijson(1,interfaceID1,"data","imgurl",imgaddress1+nameps);
  21. // 获取图片的二进制流
  22. String imageBytes1=GetImgIo.imgtoio(imgaddress1+nameps);
  23. if(imageBytes1==null||!boolean1) {
  24. System.out.println("imageBytes2="+imageBytes1+";boolean2="+boolean1+"保存失败");
  25. return false;
  26. }
  27. //写入数据库
  28. //******
  29. new File(imgaddress1+nameps).delete();//删除保存在本地的图片
  30. return true;
  31. } catch (Exception e) {
  32. System.out.println("图片保存异常");
  33. System.out.println(e);
  34. return false;
  35. }
  36. }

三、删除本地指定文件

new File("E:\one.txt").delete();//删除保存在本地的图片

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

部分代码转载来源于网络

喜欢的同学记得点个赞!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/125279
推荐阅读
相关标签
  

闽ICP备14008679号