.NET (Квантование изображения по палитре)

Модератор: Модераторы разделов

BratSinot
Сообщения: 812
ОС: Slackware64

.NET

Сообщение BratSinot »

Доброго времени суток!

Требуется преобразовать некое RGB изображение в изображение с индексироваными цветами по мною заданой палитре. На Java там все просто было, под .NET C# ничего путного по этому поводу не нашел. Можно ли это сделать штатными средствами .NET? Или придется самому писать функции для преобразования изображения?
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: .NET

Сообщение Crazy »


Desipere in loco
Спасибо сказали:
BratSinot
Сообщения: 812
ОС: Slackware64

Re: .NET

Сообщение BratSinot »

Crazy писал(а):
17.05.2012 17:43
может быть поможет http://www.c-sharpcorner.com/UploadFile/ma...rmations05.aspx

Насколько я там увидел, там о преобразовании цветов из разряда повышения интенсивности (или как это назвать) оных.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: .NET

Сообщение NickLion »

Раз растровое изображение, то System.Drawing.Bitmap имеем. У него есть метод Clone с возможностью указать PixelFormat. Попробуйте его, может то, что надо.
Спасибо сказали:
BratSinot
Сообщения: 812
ОС: Slackware64

Re: .NET

Сообщение BratSinot »

NickLion писал(а):
18.05.2012 07:46
Раз растровое изображение, то System.Drawing.Bitmap имеем. У него есть метод Clone с возможностью указать PixelFormat. Попробуйте его, может то, что надо.

PixelFormat может и меняется, только данные от этого не меняются. По крайней мере, что-то такое не работает:

Код: Выделить всё

            Bitmap tmp = new Bitmap("/home/mono/map_0.png");
            Bitmap tmp2 = new Bitmap("/home/mono/57512.jpg");
            Bitmap tmp3 = tmp2.Clone(new Rectangle(0, 0, tmp2.Width, tmp2.Height), System.Drawing.Imaging.PixelFormat.Indexed);
            tmp3.Palette = tmp.Palette;
            tmp3.Save("/home/mono/qwe.gif");
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: .NET

Сообщение NickLion »

А не пробовали использовать более явный PixelFormat — Format8bppIndexed?

UPD тут предлагают просто пересохранить в GIF:

Код: Выделить всё

MemoryStream bitStream = new MemoryStream();
image.Save(bitStream, ImageFormat.Gif);
Bitmap bitmap = new Bitmap(bitStream);
Спасибо сказали: