Flex: Компилятор Flex автоматически оптимизирует встроенные ресурсы PNG? - PullRequest
6 голосов
/ 29 июня 2010

Я пытался еще больше уменьшить размер файла SWF-файла, оптимизируя встроенную графику PNG (используя инструмент ImageOptim ).К моему удивлению, это не дало никакого эффекта, поэтому я создал два тестовых изображения:

Оригинал (433883 байта)

Оптимизировано (273723 байт)

При встраивании любого из этих ресурсов в простой проект ActionScript размер скомпилированного SWF-файла составляет ~ 274 КБ.Возникает вопрос: оптимизирует ли Flex встроенные ресурсы PNG во время компиляции?Если да, есть ли документация по оптимизации?Этого не может быть только из-за сжатия SWF, потому что архивирование изображений совсем не уменьшает размер файла.

Вот код для полноты:

package
{
    import flash.display.Sprite;

    public class SizeTest extends Sprite 
    {
        [Embed("/assets/original.png")]
        private var ImageAsset:Class;

        public function SizeTest(){
        }
    }
}

Ответы [ 2 ]

4 голосов
/ 13 февраля 2011

Ответ да , гибкий компилятор автоматически сжимает данные, используя один из входных алгоритмов (возможно, ZLIB), и прозрачно распаковывает их на другой стороне (флэш-плеер) непосредственно перед тем, как он дает вам доступ к несжатые данные.

Я встраивал ByteArray в SWF, и хотя внешние байты огромны (200 КБ), при внедрении в SWF он превращается в 30 КБ, что дает почти такие же результаты, что и сжатие вручную с использованием ByteArray.compress("zlib").

Затем я попытался вручную сжать растровые изображения PNG / JPEG, и это оказалось больше, чем просто встраивание его с использованием тега [Embed] (172 КБ в виде сжатого ByteArray против 168 КБ в качестве встроенного изображения). Позволить компилятору Flex обрабатывать сжатие встроенных данных на самом деле лучше, чем пытаться делать свои собственные трюки на стороне ByteArray.

Редактировать: Чтобы ответить на ваш вопрос о встраивании PNG, сложно сказать, что происходит внутри flex-компилятора / флеш-плеера. Хотя Adobe известна правильной документацией, она также известна многими «недокументированными функциями». Ваш конкретный вопрос лучше всего отправить архитектору флеш-плеера (например, Tinic Uro ) или самому евангелисту (например, Lee Brimelow ), с некоторыми из которых вы можете легко связаться по Facebook (см. Это список ).

2 голосов
/ 30 июня 2010

Формат swf имеет специальный внутренний формат для 32-битных PNG (с альфа-каналом), где они разделяются на 24-битный PNG и альфа-маску в оттенках серого, в результате чего альфа-маска сжимает JPEG.Нет полной уверенности в том, что Flex Builder выполняет такую ​​оптимизацию, поскольку я помню, что по крайней мере в более старой версии встроенный PNG вообще не оптимизирован.

Тем не менее, если вы ищете инструмент, который может оптимизировать встроенные изображенияSWFS вы должны проверить "Редуктор" Джоа Эберта: http://blog.joa -ebert.com / 2009/08/08 / Редуктор /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...