Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 304|回复: 0

[图像处理学习]java实现十六进制数与图片的互相转换

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-28 23:55:50 | 显示全部楼层 |阅读模式
    1、十六进制转图片jpg
    1. import java.io.File;   
    2. import java.io.FileInputStream;   
    3. import java.io.FileOutputStream;   
    4. import java.io.InputStream;   
    5. import java.io.InputStreamReader;   
    6. import java.io.OutputStream;   
    7. import java.nio.ByteBuffer;   
    8. import java.nio.channels.FileChannel;   
    9. import java.util.HashMap;   
    10. import java.util.Map;
    11. import java.io.BufferedReader;

    12.   
    13. /**  
    14. * 十六进制转成图片  
    15. * @author Administrator  
    16. *  
    17. */  
    18. public class Hex2Image {   
    19.     public static void main(String[] args) throws Exception {   
    20.         Hex2Image to=new Hex2Image();   
    21.         InputStream is=new FileInputStream("c:/work/today.txt");   
    22.         InputStreamReader isr = new InputStreamReader(is);   
    23.         BufferedReader br = new BufferedReader(isr);   
    24.         String str = null;   
    25.         StringBuilder sb = new StringBuilder();   
    26.         while ((str = br.readLine()) != null) {   
    27.             System.out.println(str);   
    28.             sb.append(str);   
    29.         }   
    30.         to.saveToImgFile(sb.toString().toUpperCase(),"c:/work/dd.jpg");   
    31.       
    32.     }   
    33.     public void saveToImgFile(String src,String output){   
    34.            if(src==null||src.length()==0){   
    35.                return;   
    36.            }   
    37.            try{   
    38.                FileOutputStream out = new FileOutputStream(new File(output));   
    39.                byte[] bytes = src.getBytes();   
    40.                for(int i=0;i< bytes.length;i+=2){   
    41.                    out.write(charToInt(bytes[i])*16+charToInt(bytes[i+1]));   
    42.                }   
    43.                out.close();   
    44.            }catch(Exception e){   
    45.                e.printStackTrace();   
    46.            }   
    47.        }   
    48.        private int charToInt(byte ch){   
    49.            int val = 0;   
    50.            if(ch>=0x30&&ch<=0x39){   
    51.                val=ch-0x30;   
    52.            }else if(ch>=0x41&&ch<=0x46){   
    53.                val=ch-0x41+10;   
    54.            }   
    55.            return val;   
    56.        }   
    57. }
    复制代码
    2.图片转成16进制
    1. import java.io.BufferedInputStream;   
    2. import java.io.BufferedReader;   
    3. import java.io.File;   
    4. import java.io.FileInputStream;   
    5. import java.io.FileOutputStream;   
    6. import java.io.FileWriter;   
    7. import java.io.IOException;   
    8. import java.io.InputStream;   
    9. import java.io.InputStreamReader;   
    10. import java.io.PrintWriter;   
    11.   
    12. /**  
    13. * 图片转成十六进制  
    14. * @author Administrator  
    15. *  
    16. */  
    17. public class ImageToHex {   
    18.     public static void main(String[] args) throws Exception {   
    19.       
    20.     try{   
    21.         StringBuffer sb = new StringBuffer();   
    22.         FileInputStream fis = new FileInputStream("c:/work/345.jpg");   
    23.         BufferedInputStream bis = new BufferedInputStream(fis);   
    24.         java.io.ByteArrayOutputStream bos=new java.io.ByteArrayOutputStream();   
    25.            
    26.         byte[] buff=new byte[1024];   
    27.         int len=0;   
    28.         while((len=fis.read(buff))!=-1){   
    29.             bos.write(buff,0,len);   
    30.         }   
    31.         //得到图片的字节数组   
    32.         byte[] result=bos.toByteArray();   
    33.       
    34.            
    35.         System.out.println("++++"+byte2HexStr(result));   
    36.         //字节数组转成十六进制   
    37.         String str=byte2HexStr(result);   
    38.         /*  
    39.          * 将十六进制串保存到txt文件中  
    40.          */  
    41.         PrintWriter   pw   =   new   PrintWriter(new   FileWriter("c:/work/today.txt"));      
    42.            pw.println(str);      
    43.            pw.close();   
    44.         }catch(IOException e){   
    45.         }   
    46.       
    47. }   
    48.     /*  
    49.      *  实现字节数组向十六进制的转换方法一  
    50.      */  
    51.     public static String byte2HexStr(byte[] b) {   
    52.         String hs="";   
    53.         String stmp="";   
    54.         for (int n=0;n< b.length;n++) {   
    55.             stmp=(Integer.toHexString(b[n] & 0XFF));   
    56.             if (stmp.length()==1) hs=hs+"0"+stmp;   
    57.             else hs=hs+stmp;   
    58.         }   
    59.         return hs.toUpperCase();   
    60.     }   
    61.       
    62.     private static byte uniteBytes(String src0, String src1) {   
    63.         byte b0 = Byte.decode("0x" + src0).byteValue();   
    64.         b0 = (byte) (b0 <<  4);   
    65.         byte b1 = Byte.decode("0x" + src1).byteValue();   
    66.         byte ret = (byte) (b0 | b1);   
    67.         return ret;   
    68.     }   
    69.     /*  
    70.      *实现字节数组向十六进制的转换的方法二  
    71.      */  
    72.     public static String bytesToHexString(byte[] src){   
    73.   
    74.         StringBuilder stringBuilder = new StringBuilder("");   
    75.         if (src == null || src.length <= 0) {   
    76.             return null;   
    77.         }   
    78.         for (int i = 0; i < src.length; i++) {   
    79.             int v = src[i] & 0xFF;   
    80.             String hv = Integer.toHexString(v);   
    81.             if (hv.length() < 2) {   
    82.                 stringBuilder.append(0);   
    83.             }   
    84.             stringBuilder.append(hv);   
    85.         }   
    86.         return stringBuilder.toString();   
    87.   
    88.     }   
    89.   
    90.   
    91.   
    92. }
    复制代码

       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/10/28/235550031.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-26 04:38 , Processed in 0.326522 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表