将imageview中的一张图片保存到内存中
Save an image in imageview to the internal memory
我读取代码并将其转换为条形码并将条形码作为图像放入其中
imageview.
下一步,我想将imageview中的图片保存到内存中。
我试过了,没用。
Bitmap bmp = ((BitmapDrawable)imageView.Drawable).Bitmap;
if (bmp != null)
{
byte[] reducedImage = btarry.GetImageStreamAsBytes(bmp);
var filename = System.IO.Path.Combine(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures).ToString(), "NewFolder");
if (!System.IO.Directory.Exists(filename))
{
System.IO.Directory.CreateDirectory(filename);
}
filename = System.IO.Path.Combine(System.DateTime.Now.ToString("yyyyMMddHHmmssfff"), "qrcode.jpg");
using (var fileOutputStream = new FileOutputStream(filename))
{
await fileOutputStream.WriteAsync(reducedImage);
}
if (bmp != null)
{
bmp.Recycle();
bmp = null;
}
}
首先,您可以使用 bmp.Compress() 来保存它而不是流和字节数组列表。此外,ExternalStorageDirectory returns 你的外部存储的根路径,将在 API 29 中弃用。最后,你使用了两次 Path.Combine,第二次将取代第一次。您可以使用以下代码保存图像,它会创建一个以时间命名的文件夹。
Bitmap bmp = ((BitmapDrawable)imageview.Drawable).Bitmap;
if (bmp != null)
{
var filename1 = Android.App.Application.Context.GetExternalFilesDir(System.DateTime.Now.ToString("yyyyMMddHHmmssfff")).AbsolutePath;
var filename = System.IO.Path.Combine(filename1, "qrcode.jpg");
using (System.IO.FileStream os = new System.IO.FileStream(filename, System.IO.FileMode.Create))
{
bmp.Compress(Bitmap.CompressFormat.Png, 100, os);
os.Close();
}
if (bmp != null)
{
bmp.Recycle();
bmp = null;
}
}
我读取代码并将其转换为条形码并将条形码作为图像放入其中 imageview.
下一步,我想将imageview中的图片保存到内存中。
我试过了,没用。
Bitmap bmp = ((BitmapDrawable)imageView.Drawable).Bitmap;
if (bmp != null)
{
byte[] reducedImage = btarry.GetImageStreamAsBytes(bmp);
var filename = System.IO.Path.Combine(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures).ToString(), "NewFolder");
if (!System.IO.Directory.Exists(filename))
{
System.IO.Directory.CreateDirectory(filename);
}
filename = System.IO.Path.Combine(System.DateTime.Now.ToString("yyyyMMddHHmmssfff"), "qrcode.jpg");
using (var fileOutputStream = new FileOutputStream(filename))
{
await fileOutputStream.WriteAsync(reducedImage);
}
if (bmp != null)
{
bmp.Recycle();
bmp = null;
}
}
首先,您可以使用 bmp.Compress() 来保存它而不是流和字节数组列表。此外,ExternalStorageDirectory returns 你的外部存储的根路径,将在 API 29 中弃用。最后,你使用了两次 Path.Combine,第二次将取代第一次。您可以使用以下代码保存图像,它会创建一个以时间命名的文件夹。
Bitmap bmp = ((BitmapDrawable)imageview.Drawable).Bitmap;
if (bmp != null)
{
var filename1 = Android.App.Application.Context.GetExternalFilesDir(System.DateTime.Now.ToString("yyyyMMddHHmmssfff")).AbsolutePath;
var filename = System.IO.Path.Combine(filename1, "qrcode.jpg");
using (System.IO.FileStream os = new System.IO.FileStream(filename, System.IO.FileMode.Create))
{
bmp.Compress(Bitmap.CompressFormat.Png, 100, os);
os.Close();
}
if (bmp != null)
{
bmp.Recycle();
bmp = null;
}
}