Задать вопрос
JustJoe_066
@JustJoe_066

Как использовать Bitmap в .NET в 7.0?

Проблема вот в чём: пытаюсь использовать Bitmap, Graphics и т.п. в Windows, однако, несмотря на обещания, что он работает только в Windows, он не работает даже в нём, пишет, что "System.Drawing.Common is not supported on this platform" если запустить его со стандартной библиотекой из NuGet и выдаёт ошибку :
675c054d94626204307714.jpeg

Какие могут быть решения проблемы? Может я гуглить не умею, но я ничего не нашёл.

Код, который пытаюсь запустить выглядит так:

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("Изображение успешно сохранено.");
    }
}
  • Вопрос задан
  • 59 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@mvv-rus
Настоящий админ AD и ненастоящий программист
Либо использовать для проекта Windows Forms, либо явно добавить в проект нужный пакет System.Drawing.Common
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы