Добавить водяной знак на изображение перед загрузкой?AS3 + Flex - PullRequest
2 голосов
/ 11 марта 2012

В течение последних нескольких часов я пытался найти способ добавить водяной знак в файл изображения перед его загрузкой, используя метод FileReference.upload();.Загрузка уже работает.Мне просто нужно выяснить, как получить небольшой водяной знак (изображение PNG с альфа-прозрачностью) в правом нижнем углу файла изображения.Другое дело, я не хочу изменить исходный файл.Я просто хочу добавить водяной знак при загрузке.

Какой подход вы бы порекомендовали для этого типа установки?Я также не могу найти какие-либо готовые классы, которые я могу использовать для этой определенной вещи.Разве это не очень распространенная задача?И нет Я не могу использовать серверную часть (PHP) для создания водяных знаков, потому что я общаюсь напрямую с API службы, а не через мой сервер.

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

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

   <s:BorderContainer width="100%" height="100%" backgroundColor="0x3322ff" id="comp">
        <s:Image source="{upload-image-source}" width="100%" height="100%"/> 
        <s:Image source="{water-mark-image-source(alpha png file)}" width="100%" height="100%"/> 
    </s:BorderContainer>

Вы можете сохранить этот контейнер как изображение.

        var bmpd:BitmapData = new BitmapData(comp.width,comp.height);
        bmpd.draw(comp);

        var jpgenc:JPEGEncoder = new JPEGEncoder(80);
        var imgByteArray:ByteArray = jpgenc.encode(bmpd);
0 голосов
/ 11 марта 2012

В основном просто добавьте изображение и водяной знак в BitmapData, а затем используйте PNG-кодировщик, такой как http://www.kaourantin.net/2005/10/png-encoder-in-as3.html, чтобы создать PNG из полученного изображения. Затем вы можете загрузить файл на свой сервер, и исходное изображение останется без изменений.

...