Sam*_*íos 2 c# memorystream stream xamarin.android xamarin.forms
我试图从另一个图像“复制”一个图像,减少它的高度和宽度,并将其作为流返回以在另一个类中检索并显示为一个图像。但是当我在另一个类中获取流时,抛出异常;“无法访问关闭的流”。
此方法获取图像路径,减小其大小并作为流返回。
public Stream getImagenCopia (string dataImagen)
{
Bitmap ImageOrig = BitmapFactory.DecodeFile (dataImagen);
var ImagenCopia = Bitmap.CreateScaledBitmap (ImageOrig, 80, 80, false);
using (MemoryStream ms = new MemoryStream ())
{
ImagenCopia.Compress (Bitmap.CompressFormat.Jpeg, 40, ms);
return ms;
}
}
Run Code Online (Sandbox Code Playgroud)
此方法接收流并将其设置在 Image 源中
var cim = auxFotos.getImagenCopia(path);
setImagen(img, cim);
void setImagen (Image img, Stream strm)
{
img.Source = ImageSource.FromStream (() =>
{
return strm;
});
}
Run Code Online (Sandbox Code Playgroud)
您正在处理 ,MemoryStream因为您正在使用using块。当您稍后尝试在代码中使用返回值时,它已不可用。
using (MemoryStream ms = new MemoryStream ())
{
ImagenCopia.Compress (Bitmap.CompressFormat.Jpeg, 40, ms);
return ms;
}
Run Code Online (Sandbox Code Playgroud)
删除using语句:
Bitmap ImageOrig = BitmapFactory.DecodeFile(dataImagen);
var ImagenCopia = Bitmap.CreateScaledBitmap(ImageOrig, 80, 80, false);
var ms = new MemoryStream());
ImagenCopia.Compress(Bitmap.CompressFormat.Jpeg, 40, ms);
return ms;
Run Code Online (Sandbox Code Playgroud)
如果您看到内存消耗激增,因为资源没有被垃圾回收,您可能需要在使用完后手动清理它,也许是通过调用.Dispose()它。
| 归档时间: |
|
| 查看次数: |
3071 次 |
| 最近记录: |