رفتن به مطلب

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


سارا-افشار

ارسال های توصیه شده

روشهای زیادی برای تبدیل تصویر به رشته متنی و بالعکس وجود دارد که بعضی از آنها از روشهای خیلی پیچیده استفاده می کنند (بسته به حوزه های کاربردی ) اما در اینجا ما یک کد آماده ارایه می کنیم که از API های یک کتابخانه خارجی برای این منظور استفاده می کند .
نام این کتابخانه خارجی [SIZE=3] Apache Commons Codec 1.10[/SIZE] هست که از [B][URL="http://commons.apache.org/proper/commons-codec/download_codec.cgi"]اینجا[/URL][/B] می توانید آن را دانلود کرده و به محیط برنامه نویسی خود add نمایید .
این کد ابتدا تصویر را از روی هارد خوانده و در یک رشته به اصطلاح Base64 ذخیره می کند به صورت باینری
وبعد به کمک دستور و متد زیر آن را به رشته تبدیل می کند [CENTER]
[CODE]String imageDataString = encodeImage(imageData);[/CODE]
[/CENTER]
و بعد دوباره آن را به حالت تصویر برمی گرداند (همان تصویر اصلی )
به وسیله متد زیر :

[CENTER][CODE] byte[] imageByteArray = decodeImage(imageDataString);[/CODE][/CENTER]
مزیت این روش در این است که تصویر را می توان به جای اینکه به همان فرمت تصویر به در درون شبکه منتقل کنیم آن را به صورت یک فایل متنی (مانند فایل xml ،JASON و... ) در شبکه از ماشینی به ماشین دیگر ارسال کنیم و هر رمزگذاری که اعمال می کنیم روی آن فایل متنی باشد نه تصویر .

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

[LEFT][CODE]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);

}
}


[/CODE]
[/LEFT]

  • Like 2
لینک به دیدگاه
×
×
  • اضافه کردن...