• 图片转为byte[]、String、图片之间的转换


    package com.horizon.action;
    
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    
    import javax.imageio.stream.FileImageInputStream;
    import javax.imageio.stream.FileImageOutputStream;
    
    public class Hello {
        // 图片到byte数组
        public byte[] image2byte(String path) {
            byte[] data = null;
            FileImageInputStream input = null;
            try {
                input = new FileImageInputStream(new File(path));
                ByteArrayOutputStream output = new ByteArrayOutputStream();
                byte[] buf = new byte[1024];
                int numBytesRead = 0;
                while ((numBytesRead = input.read(buf)) != -1) {
                    output.write(buf, 0, numBytesRead);
                }
                data = output.toByteArray();
                output.close();
                input.close();
            } catch (FileNotFoundException ex1) {
                ex1.printStackTrace();
            } catch (IOException ex1) {
                ex1.printStackTrace();
            }
            return data;
        }
    
        // byte数组到图片
        public void byte2image(byte[] data, String path) {
            if (data.length < 3 || path.equals(""))
                return;
            try {
                FileImageOutputStream imageOutput = new FileImageOutputStream(
                        new File(path));
                imageOutput.write(data, 0, data.length);
                imageOutput.close();
                System.out.println("Make Picture success,Please find image in "
                        + path);
            } catch (Exception ex) {
                System.out.println("Exception: " + ex);
                ex.printStackTrace();
            }
        }
    
        /**
         * Convert byte[] to hex
         * string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串。
         * 
         * @param src
         *            byte[] data
         * @return hex string
         */
        public static String bytesToHexString(byte[] src) {
            StringBuilder stringBuilder = new StringBuilder("");
            if (src == null || src.length <= 0) {
                return null;
            }
            for (int i = 0; i < src.length; i++) {
                int v = src[i] & 0xFF;
                String hv = Integer.toHexString(v);
                if (hv.length() < 2) {
                    stringBuilder.append(0);
                }
                stringBuilder.append(hv);
            }
            return stringBuilder.toString();
        }
    
        /**
         * Convert hex string to byte[]
         * 
         * @param hexString
         *            the hex string
         * @return byte[]
         */
        public static byte[] hexStringToBytes(String hexString) {
            if (hexString == null || hexString.equals("")) {
                return null;
            }
            hexString = hexString.toUpperCase();
            int length = hexString.length() / 2;
            char[] hexChars = hexString.toCharArray();
            byte[] d = new byte[length];
            for (int i = 0; i < length; i++) {
                int pos = i * 2;
                d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
            }
            return d;
        }
    
        /**
         * Convert char to byte
         * 
         * @param c
         *            char
         * @return byte
         */
        private static byte charToByte(char c) {
            return (byte) "0123456789ABCDEF".indexOf(c);
        }
    
        @SuppressWarnings("static-access")
        public static void main(String[] args) {
            String fromPath = "C:/Users/Administrator/123.jpg";
            String toPath = "C:/Users/Administrator/456.jpg";
            Hello hello = new Hello();
            byte[] bytes = hello.image2byte(fromPath);
            String hexString = hello.bytesToHexString(bytes);
            byte[] bytes2 = hello.hexStringToBytes(hexString);
            hello.byte2image(bytes2, toPath);
        }
    }
  • 相关阅读:
    修改silverlight DataGrid当前选中行及选中列的背景色
    转 Introduction to SharePoint Feature Stapling – Part 2
    File.ReadAllText方法,File.WriteAllText方法修改文件内容
    用xlst将xml转换html
    简单在线编辑器<转>
    随机数生成
    asp.net 2.0 的代码隐藏
    Microsoft .NET Pet Shop 3.x: .NET Pet Shop 的设计模式与体系结构
    并发术语解释
    如何在Render方法中修改替换HtmlTextWriter中的内容
  • 原文地址:https://www.cnblogs.com/tv151579/p/3520068.html
Copyright © 2020-2023  润新知