Редактирование 8bpp индексированных растровых изображений

я пытаюсь редактировать пиксели 8bpp. Поскольку этот PixelFormat проиндексирован, я знаю, что он использует таблицу цветов для сопоставления значений пикселей. Несмотря на то, что я могу отредактировать растровое изображение, преобразовав его в 24bpp, редактирование 8bpp происходит намного быстрее (13мс против 3мс). Но изменение каждого значения при доступе к растровому изображению 8bpp приводит к некоторым случайным цветам RGB, даже если PixelFormat остается 8bpp.

В настоящее время я занимаюсь разработкой на C # и алгоритм выглядит следующим образом:

(С #)

1 - загрузить оригинальный растровое изображение на 8bpp

2- Создайте пустое временное растровое изображение с 8bpp того же размера, что и оригинал.

3-LockBits обоих растровых изображений и, используя P / Invoke, вызов метода c ++, где я передаю Scan0 каждого объекта BitmapData. (Я использовал метод c ++, так как он предлагает лучшую производительность при итерации по пикселям растрового изображения)

(C ++)

4. Создайте палитру int [256] в соответствии с некоторыми параметрами и отредактируйте байты временного растрового изображения, передавая значения пикселей оригинала через палитру.

(С #)

5- Разблокировать биты.

Мой вопрос: как я могу редактировать значения пикселей, не имея странных цветов RGB, или, что еще лучше, редактировать таблицу цветов растрового изображения 8bpp?

Ответы на вопрос(3)

Ваш ответ на вопрос