大家好,又见面了,我是你们的朋友全栈君。
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){ byte[] 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(); } } }2,把加密后的图片放在android assets下
调用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 ,大功告成!有不懂可以留言。。。。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151963.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...