android 資源圖片加密
阿新 • • 發佈:2019-02-10
android 中有些重要的圖片資源可以選擇加密,因為不管是加固還是混淆,資原始檔的圖片始終能被看到,
加密圖片步驟
1. 建立java專案安作為加密圖片的工具,新建一個project,在main方法裡呼叫加密方法,加密方法裡傳一個路勁,這個路勁是電腦裡圖片的路勁
public static void main(String[] args){ //呼叫加密方法 KMD.encrypt("f:/image.png"); }
public class KMD {
//加密後,會在原圖片的路徑下生成加密後的圖片 public static void encrypt(String filePath){ byte2,把加密後的圖片放在android assets下[] tempbytes = new byte[5000]; try { InputStream in = new FileInputStream(filePath); OutputStream out = new FileOutputStream(filePath.subSequence(0, filePath.lastIndexOf("."))+"2.png"); while (in.read(tempbytes) != -1) {//簡單的交換 byte a = tempbytes[0]; tempbytes[0] = tempbytes[1]; tempbytes[1] = a; out.write(tempbytes);//寫檔案 } } catch (IOException e) { e.printStackTrace(); } } }
呼叫getImageFromAssets穿入加密後的圖片,然後解密,顯示
Bitmap bitmap= getImageFromAssets(this,"jiamiguodetupian.png"); if(bitmap != null) { imageView.setImage(ImageSource.bitmap(bitmap)); } else { Log.i(TAG,"圖片為空"); System.out.println("圖片為空"); }
public Bitmap getImageFromAssets(Context context, String fileName) { Bitmap image = null; AssetManager am = context.getResources().getAssets(); try { InputStream is = am.open(fileName); byte[] buffer = new byte[1500000];//足夠大 is.read(buffer); for(int i=0; i<buffer.length; i+= 5000){//與加密相同 byte temp = buffer[i]; buffer[i] = buffer[i+1]; buffer[i+1] = temp; } image = BitmapFactory.decodeByteArray(buffer, 0, buffer.length); if (is!=null){ is.close(); } } catch (IOException e) { e.printStackTrace(); } return image; }
ok ,大功告成!有不懂可以留言。。。。