PDA

Просмотр полной версии : cacheAsBitmap более 2880 пикселов


chingachgoog
16.05.2007, 17:48
Возможно ли использовать мувик, с одной из сторон более 2880 пикселов, с режимом cacheAsBitmap=true?
Напрямую, конечно не получиться (хотя свойство cacheAsBitmap останется включенным как true в реальности мувик уже не будет кешироваться как пиксельный.
Отсюда и вопрос, как можно такого добиться? И можно ли вообще? Может быть через flasm, наподобие снятия ограничений по рекурсии?

etc
16.05.2007, 18:06
Никак не добится. Можно свой cacheAsBitmap сделать, разбивая клип на несколько мелких битмапов.

chingachgoog
16.05.2007, 18:23
Что порезать на куски - это понятно можно...
Хотелось чуда :-)

CCCPirate
16.05.2007, 18:37
а с какой целью это делается? если не секрет

chingachgoog
16.05.2007, 19:01
С целью повысить скорость перемещения мувика и перемещению других мувиков над этим мувиком.

CCCPirate
16.05.2007, 20:14
а при каких параметрах векторного изображения (узлы, элементы) оно больше грузит проц,
чем битмап его размера?

chingachgoog
16.05.2007, 20:56
Не знаю, сколько их (узлов, элементов) должно быть, видимо надо каждый раз эмпирически определять. :-)
Но у меня их в мувике "и не сосчитать" )))

Использование cacheAsBitmap, позволило повысить скорость перемещения почти в 4 раза (замерено по реальному fps)

vic_
17.05.2007, 16:16
Может я не правильно понял задачу. Я перегоняю картинку в битмап, потом создаю пустой клип, делаю рамку по размеру первоначального клипа и натягиваю битмап
target.beginBitmapFill(contentBitmap, new Matrix(), false, true);
После чего имею обычный битмап, и нет разницы, какой размер у первоначального клипа. Только что закинул картинку 2600*2986 для проверки.

K.A.T.A.F.A.L.K.E.R
17.05.2007, 17:16
а при каких параметрах векторного изображения (узлы, элементы) оно больше грузит проц,
чем битмап его размера?
да элементарно голый текст. Если раз отрендерить в битмап а сам текст снести/скрыть - прирост производительности просто нереальный.

CCCPirate
17.05.2007, 17:42
Может я не правильно понял задачу. Я перегоняю картинку в битмап, потом создаю пустой клип, делаю рамку по размеру первоначального клипа и натягиваю битмап
target.beginBitmapFill(contentBitmap, new Matrix(), false, true);
После чего имею обычный битмап, и нет разницы, какой размер у первоначального клипа. Только что закинул картинку 2600*2986 для проверки.

каким образом ты перегоняеш векторный рисунок 2600*2986 в битмап, если:

"The maximum width and maximum height of a BitmapData object is 2880 pixels. If you specify a width or height value that is greater than 2880, a new instance is not created."

vic_
17.05.2007, 17:46
Дык перегоняю. Только поправка - не векторный рисунок, у меня в приложении грабится картинка - из диска, из инета по урлу, не важно, потом грузится в флэшку и дальше мне от нее нужен только битмап. Она перемещается, мне надо работать с ее пикселами, увеличивать, уменьшать и т.д. Принципиально разницы нет - картинку в клипе перегонять в битмап или вектор? Если есть - миль пардон.
Все работает, уж поверь.

CCCPirate
17.05.2007, 17:49
Тогда не понял какя разница между картиной и битмапом? )))

vic_
17.05.2007, 17:51
А, даже так. Ну разница есть.

CCCPirate
17.05.2007, 17:54
Какая?

vic_
17.05.2007, 17:56
Я правильно тебя понял - ты хочешь, что бы я обьяснил какая разница между картинкой в клипе и BitmapData?

CCCPirate
17.05.2007, 18:04
что ты выигрываешь, перегоняя растровое изображение в битмапдату?

vic_
17.05.2007, 18:08
в данном случае это темы не касается. Но могу сказать - мне нужно брать цвет выбранного юзером пиксела, плюс - при увеличении на несколько тысяч процентов я не получаю пикселизации, плюс при перемещении юзером изображения - он не дергается и не корежится. Собственно вот. Цвет из пиксела - критично, остальное - настоятельно.

UPD: картнка не корежится, а не юзер
UPD2: битмап перемещается по компонентам броузера, с линком на картинку было бы сложнее

chingachgoog
17.05.2007, 18:21
Может я не правильно понял задачу. Я перегоняю картинку в битмап, потом создаю пустой клип, делаю рамку по размеру первоначального клипа и натягиваю битмап
...Только что закинул картинку 2600*2986 для проверки.

Да. Неправильно понял :)

Задача состояла отрендерить в битмап ВЕКТОРНЫЙ клип (кстати он интерактивный!). Т.к. тормоза из-за отрисовки вектора AVM-ом.
При превышения 2880 клип перестает кешироваться как битмап.

vic_
17.05.2007, 18:25
ок. Просто тут предлагалось порезать на куски, я подумал, что мое решение уж точно получше. Вектор в клипе переганять или картинку - я думаю, разницы нет. А вот интерактивность - согласен.

CCCPirate
17.05.2007, 18:30
ок. Просто тут предлагалось порезать на куски, я подумал, что мое решение уж точно получше. Вектор в клипе переганять или картинку - я думаю, разницы нет. А вот интерактивность - согласен.

ты не сможешь перегнать в одну битмап дату ни вектор ни растр больше 2880

vic_
17.05.2007, 18:39
перегоняю :)
У вас такой же флэш как у меня, как я сделал - я написал.

CCCPirate
17.05.2007, 18:44
в товем примере реально должен был получится рисунок обрезанный до 2600*2880, и размноженый на 2600*2986, т.е. лишние 106 пиксела - это повторение начала рисунка

vic_
17.05.2007, 18:51
ок. Реально приложение не могу дать - не мое и декомпиляторы еще никто не отменял. Плюс грузить на свой сервер php часть и настраивать - не хочу. Сейчас сделаю скриншоты. Минут пятнадцать.

CCCPirate
17.05.2007, 18:55
вообще, если второй параметр false, то повторения быть не должно, значит - ты просто натягиваешь обрезанный кусок, но 106 пикселей из исходного рисунка должны выпасть

...и при чем сдесь ПХП и Декомпиляторы?

chingachgoog
17.05.2007, 19:00
Интересно, гружу обычный jpg через loadClip.
И он обрезается! Т.е. действует то же ограничение 2880

vic_
17.05.2007, 19:03
пхп - рисунок загружается на сервер, потом идет общение с webOrb. Без этих частей броузер не будет работать, а у меня на сервере этого нет, дать доступ на рабочий сервер не могу. Что касается декомпиляторов - извини, не хотел обидеть. Просто действительно приложение не мое и я не могу им свободно распоряжаться.
Значит скриншоты
http://www.zaporozhye.org/dreamworld/prj/img0.jpg
img1.jpg
img2.jpg
img3.jpg
img4.jpg
Там я оранжевую точку поставил в конце картинки, думаю, будет видно, что картинка не обрезалась. Естественно, не фотошоп, смысла нет врать.

UPD: img2.jpg не существует, ошибся в нумерации

CCCPirate
17.05.2007, 19:06
кстате при caсheAsBitmap, создается все та же самая битмап-поверхность и соответственно ничем не отличается от bitmapData, кроме того что к ней не применимы методы этого класса...
..а насчет дерганья, то как раз оно у битмапов и есть, при плавном движении

vic_
17.05.2007, 19:09
нету, не дергается при перетаскивании, заказчик давил на эту часть.

UPD: вернее все таки есть, сейчас посмотрел, но для такой большой картнки. Для маленьких - практически не заметно

CCCPirate
17.05.2007, 19:09
а кто тебе сказал, что в этом приложении в один экземпляр битмапдаты грузится картинка больше чем 2880?
может там как раз и есть разбиение на куски...

покажи код. который сделает это

vic_
17.05.2007, 19:16
Не, извини, одно дело подсказать как, другое доказывать что ты не дурак. Скриншоты у тебя есть, как я сделал - я рассказал. Это все.
Картинка загрузилась, я прислал ее тебе. Это все.

chingachgoog
17.05.2007, 19:18
Хм. Не ожидал такой подлянки от флеша.
Загруженный извне jpg (хоть loadClip, хоть loadMovie) режется под 2880.
А тот же jpg добавленный из либы attachMovie показывается полностью.
:(

vic_
17.05.2007, 19:22
там есть еще подлянки, если с другого сервера. Но тема уже переросла во флуд :)

chingachgoog
17.05.2007, 19:28
Тогда я встал в тупик.
Если у вас картинка ГРУЗИТСЯ извне, если она больше 2880, то каким образом она не зарезается как у меня?
Или битмап снимается полностью даже с зарезанной картинки? (в порядке рабочего бреда)

vic_
17.05.2007, 19:34
загружаю MovieClipLoader, после загрузки жду пока не появился размер, потом
tempBitmap = new BitmapData(imgHolder._width, imgHolder._height);
то есть абсолютно ничего хитрого

chingachgoog
17.05.2007, 19:44
В том-то и дело, что при загрузке (в т.ч. через MovieClipLoader) jpg помещается уже покоцанный до 2880!
Вот мне и интересно, как же вам удалось загрузить бОльший размер без эффекта обрезания? Прямо мистика какая-то :)

vic_
17.05.2007, 20:05
Клянусь :)
Через пару месяцев заказчик запустит проект смогу дать линк. Но пару мес - эт врядли, скорее три.
Кстати, сама идея не моя, где то было коротенькое сообщение, на каком то форуме. Когда наступили на эти грабли - пришлось с нуля переписывать, вот я и реализовал.

vic_
17.05.2007, 21:03
Мистика отменяется. Поставил в примере точку внизу слева - да, действительно обрезается до 2880. Т.е. единственное что я получаю - это возможность растягивать больше чем на 2880. Но при загрузке картинка обрывается. Наверное и при создании битмапдаты тоже.

CCCPirate
17.05.2007, 21:13
ч.т.д. :bye:

Dendroid
20.05.2007, 01:33
В AS3 можно грузить картинки больше 2880 и резать, резать. :)
Но лучше большие картинки хранить уже порезанными как в Google Maps или в Zoomify.

chingachgoog
22.05.2007, 14:08
В ответ на удаленный вопрос "что мешает сделать несколько битмапов с одного большого векторного мувика?" :
Лично у меня мешала ИНТЕРАКТИВНОСТЬ векторного мувика.