Как преобразовать Cameraview.GetSnapShot() в растровое изображение в мобильном приложении Мауи?C#

Место общения программистов C#
Ответить
Гость
 Как преобразовать Cameraview.GetSnapShot() в растровое изображение в мобильном приложении Мауи?

Сообщение Гость »

Это мое первое пилотное мобильное приложение.
Я установил мобильное приложение для Мауи, и оно может успешно захватывать и сохранять изображение с камеры в виде файла.
Мое дальнейшее намерение — управлять файлом изображения. пиксель за пикселем (например, в серые пиксели).
Возможно, потребуется преобразовать файл в класс Bitmap.
Мне, как обычно, сложно генерировать растровое изображение.
Ниже приведено мое описание .
// Namespace using (with System.Drawing.Common ):
using System.Drawing;

//Main code:
string camPath = FileSystem.AppDataDirectory+"\\cam.jpg";
string grayPath = FileSystem.AppDataDirectory + "\\gray.jpg";
await Cameraview.SaveSnapShot(Camera.MAUI.ImageFormat.JPEG, camPath);
//Error happen at the line below
System.Drawing.Bitmap bmp = (System.Drawing.Bitmap)System.Drawing.Image.FromFile(camPath);//Error happen here! How to rewrite this part?
System.Drawing.Bitmap newbmp = MakeGrayscale(bmp);
newbmp.Save(grayPath);
sampleImage.Source = null;
sampleImage.Source = ImageSource.FromFile(grayPath);

//call functions:
public static System.Drawing.Bitmap MakeGrayscale(System.Drawing.Bitmap original)
{
// Build a new Bitmap
System.Drawing.Bitmap newBitmap = new System.Drawing.Bitmap(original.Width, original.Height);

// set pixels to gray
for (int i = 0; i < original.Width; i++)
{
for (int j = 0; j < original.Height; j++)
{
System.Drawing.Color originalColor = original.GetPixel(i, j);
int grayScale = (int)((originalColor.R * 0.3) + (originalColor.G * 0.59) + (originalColor.B * 0.11));
System.Drawing.Color newColor = System.Drawing.Color.FromArgb(grayScale, grayScale, grayScale);
newBitmap.SetPixel(i, j, newColor);
}
}

return newBitmap;
}

public static byte[] BitmapToBytes(System.Drawing.Bitmap Bitmap)
{
System.IO.MemoryStream ms = null;
try
{
ms = new MemoryStream();
Bitmap.Save(ms, Bitmap.RawFormat);
byte[] byteImage = new Byte[ms.Length];
byteImage = ms.ToArray();
return byteImage;
}
catch (ArgumentNullException ex)
{
return null;
}
finally
{
ms.Close();
}
}

public static System.IO.Stream BytesToStream(byte[] bytes)
{
System.IO.Stream stream;
try
{
stream = new MemoryStream(bytes);
}
catch
{
return null;
}
return stream;
}


Подробнее здесь: https://stackoverflow.com/questions/781 ... mobile-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»