2013-05-30 38 views
1

我已经编写了一个应用程序来加密/解密图片。当存储加密图像时,在图像库中,我们可以看到此加密图像的“图片不可用”图标。我想将其更改为默认图标,但我不知道默认存储位置在哪里...在Android中更改默认的“图片不可用”图标

谢谢!

编辑

什么我想现在要做的,是BitMapFactory的encripted文件转换为位图。这个图标不可能改变,EXIF算法也不是我想要的。 有了这段代码,我得到一个黑色的位图,我想要做的是从显示彩色像素的描述文件中获得一个位图。任何想法?

Bittmap bitmap=BitmapFactory.decodeFile("/sdcard/abc.jpg"); 
Bitmap bm = bitmap.createBitmap(30, 30, Bitmap.Config.ARGB_8888); 

ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
bm.compress(CompressFormat.JPEG, 30, bos); 
bos.toByteArray(); 

FileOutputStream ft = new FileOutputStream(new File("/sdcard/ab.jpg")); 
bos.writeTo(ft); 
bos.flush(); 
ft.flush(); 
bos.close(); 
ft.close(); 
+0

图像在图库中是否正确打开?如果您可以正确打开,这意味着在加密/解密过程中照片的标题已经更改。 – Akatosh

+0

@Akatosh有可能使用AES和mantain jpg格式来加密图像? – user2436195

+0

您可以,但您需要确保您正在加密所有数据,包括标题。如果你设法解密,标题应该在那里。 – Akatosh

回答

0

这超出了您的控制范围。当解析失败时,默认图库appliaction(可能还有Google Play上的其他1000人)显示自己的图像。

+0

那么,可以通过其他方式对图像进行加密后显示图像吗? – user2436195

+0

Android使用图像来生成预览,所以我的猜测是否定的。 – Akatosh

+0

@ user2436195技术上这是可能的。如果您了解了png内部信息,那么您可以在其中添加一个标题部分,您可以在其中放置加密文件并将预定义文件用于数据部分。不是很容易,但(我认为)是可行的。如果你使它工作,我一定会想看到这个。 –

0

由于您的应用程序加密图像,我想你希望他们都只能通过你的应用程序查看。那么,为什么不只是将文件扩展名更改为其他内容,以便Android图库不会将该文件识别为图像并尝试显示它。

+0

我想要它显示的所有加密图像的标准图像不同于“图片不可用” – user2436195

+0

我不知道这是否是可能的。 Android图库对图像进行解码和缩放以将其显示为网格/列表中的缩略图,当您选择它时,您会看到完整图像。当它无法解码图像时,它会显示一个默认的缩略图,我猜你无法访问它。 也许尝试一些更复杂的东西。就像首先添加缩略图的数据一样。然后加密图像的数据,并确保这些数据被拆分的方式,android图库不考虑其余的位。 – Panos

+0

或者,也可以将加密的图像保存在不同的目录中,并将其替换为图像目录中的缩略图。当您的应用程序恢复图像时,请删除缩略图并将图像目录恢复为真实图像。 – Panos