|
|
|||||
Корректный цвет пикселя
Имеется некое изображение и код
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.Event; /** * ... * @author TanaTiX */ public class Main extends Sprite { [Embed(source = "../lib/attachment.jpg")] public var _Image:Class; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); var bmd:BitmapData = (new _Image() as Bitmap).bitmapData; var i:int = 0; for (var j:int = 0; j < bmd.width; j++) { for (var k:int = 0; k < bmd.height; k++) { if (bmd.getPixel(j, k) == 0xffffff) { trace(j, k); i++; } } } trace(i); } } }
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
Перекодирование картинки при внедрении? Попробуйте какой-нибудь утилитой картинку из уже готовой флешки достать. Вроде бы в swftools или в swfmill были инструменты. Ну и побайтово сравните с исходной. Вообще, Jpeg до какой-то версии нормально в swf поддерживается и перекодирование картинки не обязательно. С другой стороны, перекодировать из заведомо неподдерживаемых форматов компилятор умеет и jpeg'и тоже может заодно обрабатывать.
|
|
|||||
Регистрация: Jul 2007
Сообщений: 393
|
jpeg формат не похож на массив вроде (x,y, цвет) - там вместо пикселей блоки. Разные либы, которые используются в getPixel, и ФШ, могут давать разные результаты, в теории. Зависит от того, насколько грамотно разработчик реализовал алгоритм(ну, например, уточнение коэффициентов для прогрессивного кодирования). Ну и одному Адобу ведомо, что там при внедрении на самом деле происходит.
|
|
|||||
Немного проясню ситуацию. Зашел на одном форуме, даже не спор, а разговор, сколько абсолютно белых пикселей содержит изображение. Были предложены результаты написанные на яве, VB, ну и флеш. Может еще на чем-то появится. Первые 2 выдают одинаковые результаты, которые отличаются от того, что выдает флеш и ФШ. При чем ФШ по подсчету более близок к результатам программы, написанной на ас, но при попиксельной проверке опять же различия. Кстати, для интересующихся прикрепляю изображение, на всякий случай в архиве (хз, может движок форума как-то его конвертнуть захочет).
Что сделал дополнительно. Декомпилировал сотинком полученную swf, сохранил из нее то самое изображение и подставил опять в мою программу. Результат (и по количеству, и по координатам) остался прежний. Да, jpg несколько специфичный формат, но не на столько что бы результаты на столько отличались в зависимости от того, какой программой смотреть. Собственно, если не доверять ФШ-у, то кому? Как достоверно определить цвет пикселя?
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
Перекодировали изображение в png, результаты оказались более кучными. Так, as3, java, VB выдают одинаковые результаты, паскаль отличается. И ФШ по прежнему ни с кем не согласен. С jpg еще можно предположить в чем проблема, а относительно png - формат, заявленный, как не приводящий к потери качества при сжатии... В общем если у кого есть идеи, было бы интересно послушать.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цветовое пространство?
Фотошоп: Edit >> Color Settings
__________________
Reality.getBounds(this); |
|
|||||
Wolsh, а разве этот показатель влияет на собственно цвет пикселя? Имею ввиду тот цвет, который описан форматом файла и содержится в нем в виде набора байтов, а не то, как он будет отображаться на экране разных фирм, бумаге при печати и пр.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Расскажите, как Вы получали в фотошопе статистику.
Цитата:
И только 3 из них совпадут по координатам с джипежкой. На примере точки 199, 34 можно увидеть, что в джипежке она не белая, а для колорпикера фотошопа — белая. И в PNG эта точка будет сохранена как белая. Фотошоп при открытии файла jpeg составил свой битмап, по своим алгоритмам, наверняка более изощренным, чем используемые в других программах. Повторю Krusty: джипег это не битмап, в нем нет цветов конкретных пикселей. Что касается PNG в фотошопе, который "не согласен", я не знаю на что можно еще грешить, кроме цветового профиля. Мне как-то попадалась PNG, которая показывалась и сохранялась с разными цветами в зависимости от color settings, но получить такой PNG из этой джипежки я не смог.
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 18.11.2012 в 23:03. |
|
|||||
listener
|
вот тут что-то интересное было про цвет http://www.flasher.ru/forum/blog.php?b=24
|
Часовой пояс GMT +4, время: 01:16. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|