Итак, вот подробности (я использую C # BTW):
Я получаю изображение 32 бита (сжатый в формате JPEG) с сервера. В какой-то момент я хотел бы использовать свойство «Палитра» растрового изображения для окрашивания пересыщенных пикселей (яркость> 240) красным. Для этого мне нужно получить изображение в индексированном формате.
Я попытался преобразовать изображение в GIF, но получаю потерю качества. Я попытался создать новое растровое изображение в индексном формате с помощью этих методов:
// causes a "Parameter not valid" error
Bitmap indexed = new Bitmap(orig.Width, orig.Height, PixelFormat.Indexed)
// no error, but the resulting image is black due to information loss I assume
Bitmap indexed = new Bitmap(orig.Width, orig.Height, PixelFormat.Format8bppIndexed)
Я сейчас в растерянности. Данные на этом изображении постоянно изменяются пользователем, поэтому я не хочу вручную устанавливать пиксели с яркостью> 240, если я могу избежать этого. Если я смогу установить палитру один раз при создании изображения, моя работа закончена. Если я собираюсь пойти по этому пути неправильно, пожалуйста, дайте мне знать.
РЕДАКТИРОВАТЬ: Спасибо, ребята, вот еще некоторые подробности о том, что я пытаюсь сделать.
Мы сканируем предметное стекло с высоким разрешением (патология). Я пишу интерфейс для фактического сканера. Мы используем камеру линейного сканирования. Чтобы проверить скорость линии камеры, пользователь сканирует очень маленькую часть и смотрит на изображение.
Изображение отображается рядом с трек-баром. Когда пользователь перемещает полосу трека (регулируя скорость линии), я изменяю общую интенсивность изображения, пытаясь смоделировать, как оно будет выглядеть при новой скорости линии. Я делаю это с использованием объекта ImageAttributes и ColorMatrix в настоящее время.
Когда пользователь настраивает панель трека, я настраиваю матрицу. Это не дает мне информацию на пиксель, но производительность очень хорошая. Я мог бы использовать здесь LockBits и некоторый небезопасный код, но я бы не стал переписывать его, если это возможно. Когда создается новое изображение, я бы хотел, чтобы все пиксели со значением яркости> 240 были окрашены в красный цвет. Я думал, что определение палитры для растрового изображения было бы чистым способом сделать это.