如何将Java.IO.FileOutputStream写入photo.Compress(Bitmap.CompressFormat.Png,100,outputstream)?

时间:2013-09-18 07:33:39

标签: android

文件编码有问题。这段代码基本上将位图文件保存到android库中。

Java.IO.File MyDirectory = new Java.IO.File(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures), "MyDirectory");            
Java.IO.File MyFile= new Java.IO.File(MyDirectory , String.Format("Photo{0}.jpg", Guid.NewGuid()));

Bitmap photo;
Bundle extras = data.Extras;
photo = (Bitmap)extras.Get("data")

如何将照片(位图)保存到MyFolder android库中? 我试过这个来保存照片:

Java.IO.FileOutputStream outFile = new Java.IO.FileOutputStream(MyFile);
photo.Compress(Bitmap.CompressFormat.Png, 100, outFile);

我收到的错误是照片压缩的时候..

 error: Cannot convert from Java.IO.FileOutputStream to System.IO.Stream.

抱歉,我是文件编码的新手。任何帮助或解决方案表示赞赏。

3 个答案:

答案 0 :(得分:1)

这是我的代码。

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

public static void saveBitmap(Context context, Bitmap bitmap) {
        String env = Environment.getExternalStorageDirectory().getPath();
        String path = env + "/test.png";
        try {
            File f = new File(path);

            FileOutputStream fileOut = new FileOutputStream(f);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOut);
            try {
                fileOut.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            bitmap.recycle();

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

答案 1 :(得分:1)

这应该有效

 var file = new FileStream(fname, FileMode.Create, FileAccess.Write, FileShare.None);
 photo.Compress(Bitmap.CompressFormat.Jpeg, 85, file);

答案 2 :(得分:0)

我使用替代方法来压缩我的位图(使用MemoryStream),这是我的代码。

using(Bitmap bitmap = BitmapFactory.DecodeFile(myFileString))
{
    MemoryStream stream = new MemoryStream();
    bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, stream);
    myWebService.functionSave(stream.ToArray());
}

//myWebservice function parameter.
functionSave(byte[] fileStream)
{
    //... save your bitmap code using byte[]
}