В настоящее время я пытаюсь сделать снимок через Android и сохранить изображение, где я буду загружать его в базу данных позже. Пройдя несколько уроков в Интернете, я обнаружил, что код, который я использую, сохраняет только миниатюру с низким разрешением захваченного изображения вместо полного изображения.
Есть ли способ получить полноразмерное изображение для сохранения? Формат должен быть Jpeg из-за способа установки программного обеспечения, использующего базу данных.
Фотосъемка работает по назначению:
private void _openCamera_Click(object sender, EventArgs e)
{
Intent intent = new Intent(MediaStore.ActionImageCapture);
StartActivityForResult(intent, 0);
}
Здесь изображение заканчивается сохранением в виде эскиза. В идеале этот раздел будет единственным кодом, который мы модифицируем:
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
Bitmap bitmap = (Bitmap)data.Extras.Get("data");
this._photo.SetImageBitmap(bitmap);
MemoryStream memStream = new MemoryStream();
bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, memStream);
this._tempImageData = memStream.ToArray();
}
Обновление: Ответ SushiHangover работает без нареканий. Для работы с кэшированным изображением я использовал следующий код:
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (resultCode != Result.Ok || requestCode != 88)
{
return;
}
Bitmap bitmap = BitmapFactory.DecodeFile(cacheName);
this._photo.SetImageBitmap(bitmap);
MemoryStream memStream = new MemoryStream();
bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, memStream);
this._tempImageData = memStream.ToArray();
}