Копия растровых данных имеет неправильный цвет?
Я загружаю изображение в свое приложение, а затем преобразовываю это изображение в данные base64, а затем снова отображаю его (на странице HTML). Но когда я делаю это, цвета разные! Я использую getPixel32, чтобы получить данные изображения. Я где-то читал, что Flash использует предварительно вычисленные значения, и это причина. Я смутно понял это. Может кто-нибудь объяснить или дать ссылку на статью, объясняющую, что происходит и как это исправить?
Фрагмент кода:
byteArray = bitmapData.getPixels(new Rectangle(0, 0, bitmapData.width, bitmapData.height));
Кроме того, возможно ли, что он потерял свой цветовой профиль?
ОБНОВИТЬ
Я включаю код, который я использую, чтобы сделать снимок экрана и преобразовать его в базу данных 64. http://pastebin.com/Q7MiWg9u
1 ответ
Это очень хороший вопрос! Сначала я публикую это как ответ, потому что это слишком долго для комментария, а во-вторых, потому что эта статья, по крайней мере, поможет вам понять, в чем проблема: http://www.quasimondo.com/archives/000665.php
Все из-за предварительно умноженной альфы и способа работы Flash с ней.
Я собираюсь сделать несколько небольших тестов, чтобы посмотреть, сможете ли вы на самом деле это исправить, используя getPixel32 и setPixel32, где вы можете использовать немноженные значения и вычислить, какие именно значения вам нужно установить.