您的位置:首页 > 其它

/res/drawable图片保存到sd卡

2011-03-24 17:38 302 查看
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
/**
* This Activty shows how to save an image (Bitmap) to the filesystem, with FileOutputStream object
* @author FaYnaSoft Labs
*
*/
public class Main extends Activity {
private Bitmap bitmap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
FileOutputStream fos = null;
try {
fos = openFileOutput("image", Context.MODE_PRIVATE);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (FileNotFoundException e) {
} finally {
if (fos != null) {
try {
fos.flush();
fos.close();
} catch (IOException e) {
}
}
}
}
}


这个只能存储到应用的/data/data/packageName/files里, 而不是sd卡中,这是部分log

===========================================

03-23 13:56:07.639: WARN/System.err(5972): java.lang.IllegalArgumentException: File /mnt/sdcard/appMessage.png contains a path separator

03-23 13:56:07.639: WARN/System.err(5972): at android.app.ContextImpl.makeFilename(ContextImpl.java:1693)

03-23 13:56:07.639: WARN/System.err(5972): at android.app.ContextImpl.openFileOutput(ContextImpl.java:414)

03-23 13:56:07.639: WARN/System.err(5972): at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:158)

===========================================

可以实现的方案如下:

用InputStream is=this.getResources().openRawResource(R.drawable.icon);

再讲InputStream 转成 byte[],网上有方法,也可以参考下一篇Blog

最后将这个byte[]写入到sd卡中去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐