Patel Shailendra Ответов: 2

У меня есть изображение футболки,я хочу изменить цвет футболки в приложении C# windows


Привет Команда,

Я создаю приложение для windows, которое может взять шаблон продукта (футболку) и вставить на него логотип клиента. Мне нужно изменить цвет шаблона продукта и логотипа в соответствии с запросом клиента.

Я погуглил, но не получил ни одного правильного разрешения.

Что я уже пробовал:

private void button1_Click(object sender, EventArgs e)
        {
            
            
           string template1 = @"D://shailendra//CurrentProject//Dubow//aws_live//Templates//ProductTemplate//18500_Front.jpg";
            pictureBox1.Image = Image.FromFile(template1);

            
            using (MagickImage image = new MagickImage(template1))
            {
                // Fill the image with a transparent background
                image.FloodFill(MagickColors.None, 0, 0);

                // Change all the pixels that are not transparent to yellow.
                image.InverseOpaque(MagickColors.None, MagickColors.Blue);
                image.
                //image.CopyPixels()

                // Change the transparent pixels to white.
                image.ColorAlpha(MagickColors.White);

                image.Write("test.png");
                pictureBox2.Image = Image.FromFile(image.FileName);


            }

Patel Shailendra

Это сделает мой шаблон продукта синим, но это не то, что мне нужно. Его создают обратным образом

2 Ответов

Рейтинг:
2

MadMyche

У MagickImage есть метод, который меняет цвет, называемый opaqueImage
MagickImage[^]

При этом важно учитывать, что цветные пиксели, которые вы хотите изменить, могут иметь не все одинаковые значения RGB, особенно если вы имеете дело с JPEG-файлами, имеющими схемы сжатия с потерями. Есть несколько вариантов, как это преодолеть.

Во-первых, нужно изменить "базовый" тип изображения с JPG на PNG-изображение, которое можно настроить на схему сжатия без потерь. Затем вы можете ротоскопировать изображение, чтобы "сгладить" цвета до одного точного цвета для изменения.

Другой вариант-использовать свойство в MagickImage, которое позволяет установить отклонение в соответствии с цветом, оно называется ColorFuzz, и позволяет ввести процент от исходного цвета для поиска. Я действительно нашел нить на переполнении стека, которая охватывала именно эту вещь
c# - не может заменить цвет магией.Переполнение Сетевого Стека[^]


Рейтинг:
1

KarstenK

Получите доступ к растровому изображению и его пикселям и получите/установите их в новый цвет. Это объясняется в статье Работа с растровыми изображениями быстрее в C# Используйте логотип в качестве прозрачного наложенного изображения.