android 前提是引入base64encode,base64decode六个开源类
- package com.example.testapp;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import android.app.Activity;
- import android.graphics.Bitmap;
- import android.os.Bundle;
- import android.os.Environment;
- public class MainActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- System.out.println("path---->"+Environment.getExternalStorageDirectory().getPath());
- File file = new File(Environment.getExternalStorageDirectory().getPath()+"//qq.jpg");
- InputStream in = null;
- byte[] data = null;
- // 读取图片字节数组
- try {
- in = new FileInputStream(file);
- data = new byte[in.available()];
- in.read(data);
- in.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- // 对字节数组Base64编码
- BASE64Encoder encoder = new BASE64Encoder();
- System.out.println("drf--------"+encoder.encode(data));// 返回Base64编码过的字节数组字符串
- }
- private InputStream Bitmap2Bytes(Bitmap bmp) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- // 得到输出流
- bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
- // 转输入流
- InputStream isBm = new ByteArrayInputStream(baos.toByteArray());
- return isBm;
- }
- }
server
- package com.dong.test.binaryimage;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import sun.misc.BASE64Decoder;
- import sun.misc.BASE64Encoder;
- public class TestLUcky {
- public static void main(String[] args) {
- String strImg = GetImageStr();
- System.out.println(strImg);
- GenerateImage(strImg);
- }
- public static String GetImageStr() {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
- String imgFile = "c:\\qq.jpg";// 待处理的图片
- InputStream in = null;
- byte[] data = null;
- // 读取图片字节数组
- try {
- in = new FileInputStream(imgFile);
- data = new byte[in.available()];
- in.read(data);
- in.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- // 对字节数组Base64编码
- BASE64Encoder encoder = new BASE64Encoder();
- return encoder.encode(data);// 返回Base64编码过的字节数组字符串
- }
- public static boolean GenerateImage(String imgStr) {// 对字节数组字符串进行Base64解码并生成图片
- if (imgStr == null) // 图像数据为空
- return false;
- BASE64Decoder decoder = new BASE64Decoder();
- try {
- // Base64解码
- byte[] b = decoder.decodeBuffer(imgStr);
- for (int i = 0; i < b.length; ++i) {
- if (b[i] < 0) {// 调整异常数据
- b[i] += 256;
- }
- }
- // 生成jpeg图片
- String imgFilePath = "c:\\qq.bak.jpg";// 新生成的图片
- OutputStream out = new FileOutputStream(imgFilePath);
- out.write(b);
- out.flush();
- out.close();
- return true;
- } catch (Exception e) {
- return false;
- }
- }
- }