resdrawable图片保存到sd卡

    技术2022-05-18  12

    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卡中去。

     


    最新回复(0)