Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Поддержка картинок Webp (http://www.flasher.ru/forum/showthread.php?t=215810)

djken 17.06.2022 15:52

Поддержка картинок Webp
 
Внезапно поломался проект AIR, т.к. api соцсети стал отдавать картинки в формате webp...
Есть ли какая библиотека для работы с webp в AS3? Мои поиски пока не увенчались успехом... Заранее благодарен за помощь в вопросе

Bletraut 18.06.2022 19:23

Может это поможет?

djken 21.07.2022 14:57

Bletraut, спасибо, эта единственная наверно библиотека на которую изначально и наткнулся, но как с ней работать пока не разбирался - там нет привычных расширений файлов..
Сделал сразу временное решение на php: на сервере получаю Json, там же вытаскиваю все webp и конвертирую в jpeg, приложение получает готовые картинки. Но правильней было бы, наверно, чтоб это все на клиенте происходило.

Bletraut 28.07.2022 17:17

Цитата:

Сообщение от djken (Сообщение 1207015)
Bletraut, спасибо, эта единственная наверно библиотека на которую изначально и наткнулся, но как с ней работать пока не разбирался - там нет привычных расширений файлов..
Сделал сразу временное решение на php: на сервере получаю Json, там же вытаскиваю все webp и конвертирую в jpeg, приложение получает готовые картинки. Но правильней было бы, наверно, чтоб это все на клиенте происходило.

А какие расширения файлов нужны? В либу вроде просто считывается файл и подаетcя ByteArray, а на выходе будет BitmapData, с которой можно работать.

djken 29.07.2022 01:40

Увидел.. К этой библиотеке libwebp написано "You must include bin/libwebp.swc"..
Подключил libwebp.swc во Flash Builder - в этом проблем нет. Как теперь использовать в своем проекте? К этой библиотеке вкратце написано:
Код AS3:

package libwebp;
function DecodeWebp(webpByteArray:ByteArray):BitmapData;
function EncodeWebp(input:BitmapData, quality:Number):ByteArray;

Нужно создать отдельный as3 файл для этого пакета? Обычно я в swc сохраняю нарисованные интерфейсы, а в отдельном as3 файле наслюдуюсь и пишу уже конструкторы, методы для класса. А что тут мне нужно сделать? Пока не могу понять... Заранее спасибо за подсказку )

P.S. если просто пытаюсь обратиться к DecodeWebp, то FlashBuilder не видит этого метода

Bletraut 29.07.2022 13:58

Цитата:

Сообщение от djken (Сообщение 1207017)
Увидел.. К этой библиотеке libwebp написано "You must include bin/libwebp.swc"..
Подключил libwebp.swc во Flash Builder - в этом проблем нет. Как теперь использовать в своем проекте? К этой библиотеке вкратце написано:
Код AS3:

package libwebp;
function DecodeWebp(webpByteArray:ByteArray):BitmapData;
function EncodeWebp(input:BitmapData, quality:Number):ByteArray;

Нужно создать отдельный as3 файл для этого пакета? Обычно я в swc сохраняю нарисованные интерфейсы, а в отдельном as3 файле наслюдуюсь и пишу уже конструкторы, методы для класса. А что тут мне нужно сделать? Пока не могу понять... Заранее спасибо за подсказку )

P.S. если просто пытаюсь обратиться к DecodeWebp, то FlashBuilder не видит этого метода

Нужно в as3 файле подключить это пространство имён, т.е. дописать
Код AS3:

import libwebp.*;

А затем уже использовать методы в библиотеке, т.е. скачать файл webp, прочитать из него ByteArray и передать в метод DecodeWebp, из него получить BitmapData.

Добавлено через 1 час 3 минуты
Если коротко, то примерно должно выглядеть так.
P.S. Нет под рукой рабочего флеша чтобы проверить, писал по памяти.

Код AS3:

package
{
        import flash.display.BitmapData;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.utils.ByteArray;
        import flash.net.*;
 
        import libwebp.*;
 
        /**
        * ...
        * @author Bletraut
        */

        public class Main extends Sprite
        {
                private var loader:URLLoader;
 
                public function Main()
                {
                        var request:URLRequest = new URLRequest("https://www.gstatic.com/webp/gallery/1.webp");
 
            loader:URLLoader = new URLLoader();
                        loader.dataFormat = URLLoaderDataFormat.BINARY;
                        loader.load(request);
            loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);
                }
 
                private function loaderCompleteHandler(event:Event):void
                {
                        var bytes:ByteArray = loader.data;
                        var decodedBitmap:BitmapData = DecodeWebp(bytes);
        }
        }
 
}



Часовой пояс GMT +4, время: 08:27.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.