Проблема вот в чём: пытаюсь использовать Bitmap, Graphics и т.п. в Windows, однако, несмотря на обещания, что он работает только в Windows, он не работает даже в нём, пишет, что "System.Drawing.Common is not supported on this platform" если запустить его со стандартной библиотекой из NuGet и выдаёт ошибку :
Какие могут быть решения проблемы? Может я гуглить не умею, но я ничего не нашёл.
Код, который пытаюсь запустить выглядит так:
using System;
using System.Drawing;
using System.Drawing.Imaging;
class Program
{
static void Main()
{
// Путь к исходному изображению
string inputFilePath = @"C:\path\to\input_image.jpg";
// Путь для сохранения результата
string outputFilePath = @"C:\path\to\output_grayscale.jpg";
// Загружаем изображение
using (Bitmap originalImage = new Bitmap(inputFilePath))
{
// Создаем новое изображение того же размера
using (Bitmap grayscaleImage = new Bitmap(originalImage.Width, originalImage.Height))
{
// Получаем объект Graphics для рисования
using (Graphics g = Graphics.FromImage(grayscaleImage))
{
// Применяем эффект преобразования цвета в оттенки серого
ColorMatrix colorMatrix = new ColorMatrix(new float[][]
{
new float[] {0.299f, 0.299f, 0.299f, 0, 0},
new float[] {0.587f, 0.587f, 0.587f, 0, 0},
new float[] {0.114f, 0.114f, 0.114f, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1}
});
ImageAttributes attributes = new ImageAttributes();
attributes.SetColorMatrix(colorMatrix);
// Рисуем исходное изображение с применением матрицы
g.DrawImage(
originalImage,
new Rectangle(0, 0, grayscaleImage.Width, grayscaleImage.Height),
0,
0,
originalImage.Width,
originalImage.Height,
GraphicsUnit.Pixel,
attributes
);
// Сохраняем результат
grayscaleImage.Save(outputFilePath, ImageFormat.Jpeg);
}
}
}
Console.WriteLine("Изображение успешно сохранено.");
}
}