Доброго времени суток!
Требуется преобразовать некое RGB изображение в изображение с индексироваными цветами по мною заданой палитре. На Java там все просто было, под .NET C# ничего путного по этому поводу не нашел. Можно ли это сделать штатными средствами .NET? Или придется самому писать функции для преобразования изображения?
.NET (Квантование изображения по палитре)
Модератор: Модераторы разделов
-
Crazy
- Сообщения: 862
- Статус: Адепт Дзен.
- ОС: Mint, Win7.
Re: .NET
может быть поможет http://www.c-sharpcorner.com/UploadFile/ma...rmations05.aspx
Desipere in loco
-
BratSinot
- Сообщения: 812
- ОС: Slackware64
Re: .NET
Crazy писал(а): ↑17.05.2012 17:43может быть поможет http://www.c-sharpcorner.com/UploadFile/ma...rmations05.aspx
Насколько я там увидел, там о преобразовании цветов из разряда повышения интенсивности (или как это назвать) оных.
-
NickLion
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: .NET
Раз растровое изображение, то System.Drawing.Bitmap имеем. У него есть метод Clone с возможностью указать PixelFormat. Попробуйте его, может то, что надо.
-
BratSinot
- Сообщения: 812
- ОС: Slackware64
Re: .NET
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
А не пробовали использовать более явный PixelFormat — Format8bppIndexed?
UPD тут предлагают просто пересохранить в GIF:
UPD тут предлагают просто пересохранить в GIF:
Код: Выделить всё
MemoryStream bitStream = new MemoryStream();
image.Save(bitStream, ImageFormat.Gif);
Bitmap bitmap = new Bitmap(bitStream);