سورس کد تبدیل تصویر به متن و برعکس جهت ارسال در شبکه

بازدید: 4273 بازدید
convert image to string in java

روشهای زیادی برای تبدیل تصویر به رشته متنی و بالعکس وجود دارد که بعضی از آنها از روشهای خیلی پیچیده استفاده می کنند (بسته به حوزه های کاربردی ) اما در اینجا ما یک کد آماده ارایه می کنیم که از API های یک کتابخانه خارجی برای این منظور استفاده می کند این سورس کد جهت تبدیل تصویر به متن و انتقال آن در شبکه کاربرد دارد .
نام این کتابخانه خارجی Apache Commons Codec 1.10 هست که از اینجا می توانید آن را دانلود کرده و به محیط برنامه نویسی خود add نمایید .
این کد ابتدا تصویر را از روی هارد خوانده و در یک رشته به اصطلاح Base64 ذخیره می کند به صورت باینری
وبعد به کمک دستور و متد زیر آن را به رشته تبدیل می کند

کد:
String imageDataString = encodeImage(imageData);

و بعد دوباره آن را به حالت تصویر برمی گرداند (همان تصویر اصلی )
به وسیله متد زیر :

کد:
 byte[] imageByteArray = decodeImage(imageDataString);

مزیت این روش در این است که تصویر را می توان به جای اینکه به همان فرمت تصویر به  درون شبکه منتقل کنیم آن را به صورت یک فایل متنی (مانند فایل xml ،JASON و… ) در شبکه از ماشینی به ماشین دیگرانتقال دهیم  و هر رمزگذاری که اعمال می کنیم روی آن فایل متنی باشد نه تصویر .

کد کامل این برنامه رو در زیر می توانید مشاهده نمایید

کد:
package com.myjeeva.image;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
 
import org.apache.commons.codec.binary.Base64;
 
/**
 * @desc Image manipulation - Conversion
 * 
 * @filename ImageManipulation.java
 * @author Jeevanandam M.
 * @copyright myjeeva.com
 */
public class ImageManipulation {
     
    /**
     * @param args
     */
    public static void main(String[] args) {
        File file = new File("/Users/sara/Pictures/wallpapers/water-drop.jpg");

 
        try {           
            // Reading a Image file from file system
            FileInputStream imageInFile = new FileInputStream(file);
            byte imageData[] = new byte[(int) file.length()];
            imageInFile.read(imageData);
 
            // Converting Image byte array into Base64 String
            String imageDataString = encodeImage(imageData);
 
            // Converting a Base64 String into Image byte array
            byte[] imageByteArray = decodeImage(imageDataString);
             
            // Write a image byte array into file system
            FileOutputStream imageOutFile = new FileOutputStream(
                    "/Users/jeeva/Pictures/wallpapers/water-drop-after-convert.jpg");
            imageOutFile.write(imageByteArray);
 
            imageInFile.close();
            imageOutFile.close();
 
            System.out.println("Image Successfully Manipulated!");
        } catch (FileNotFoundException e) {
            System.out.println("Image not found" + e);
        } catch (IOException ioe) {
            System.out.println("Exception while reading the Image " + ioe);
        }
 
    }
     
    /**
     * Encodes the byte array into base64 string
     *
     * @param imageByteArray - byte array
     * @Return String a {@link java.lang.String}
     */
    public static String encodeImage(byte[] imageByteArray) {
        return Base64.encodeBase64URLSafeString(imageByteArray);
    }
     
    /**
     * Decodes the base64 string into byte array
     *
     * @param imageDataString - a {@link java.lang.String}
     * @Return byte array
     */
    public static byte[] decodeImage(String imageDataString) {
        return Base64.decodeBase64(imageDataString);

    }
}
منبع: نواندیشان
مقالات، مطالب، طرح ها و پروژه های خود را برای قرارگیری در سایت علمی آموزشی نواندیشان از اینجا بفرستید.

ادامه مطلب