Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как сохранить в *.PNG? (http://www.flasher.ru/forum/showthread.php?t=111445)

mixery 26.04.2008 13:56

Как сохранить в *.PNG?
 
Здравствуйте! Проблема такая- есть "рисовалка", примерно как Граффити в контакте, нужно чтобы юзер что-либо в ней нарисовал, а потом это "что-то" сохранилось на сервере в *.PNG , *.JPEG, не важно. Каким вообще образом это осуществимо? На Вконтакте используется PNGEncoder.as, но как там что-ума не приложу (т.к. самого этого файла у меня нет :( )

Wolsh 26.04.2008 14:19

http://ink.envisionext.com/swf2png/index.php

mixery 26.04.2008 19:17

Все замечательно, но
http://ink.envisionext.com/swf2png/index.php---->Forbidden
You don't have permission to access / on this server. :(

Еще вопрос-это возможно будет сделать в Flash-8?

bbexp 26.04.2008 20:15

http://www.5etdemi.com/blog/archives...ving-solution/

AlexDesinger 04.05.2008 16:48

у меня есть этот код, который сохраняет в png на сервак, есть даже чтобы сохранял в jpg - вся фигня в том что они работают на as 3 ...мне бы тоже бы как нть состыковать это с as2 но тут мне никто помочь не смог. может щас кто подскажет....:o

bbexp 05.05.2008 11:42

AlexDesigner - вы открывали ссылку?
Заголовок статьи: The ultimate AS2 BitmapData saving solution.

mixery 05.05.2008 11:50

Скачал, пытаюсь все разобраться, но там нужен gateway.php, а в архиве его нет. Подскажите, что делать! =) Кто уже разбирался с этим??

etc 05.05.2008 13:24

mixery, вы статью по ссылке читали или просто архив скачали?

mixery 06.05.2008 12:49

Конечно читал! И гуглил долго до того, как создал тему. но с английским не очень хорошо, методом тыка пытаюсь разобраться. Но не очень-то и получается (

Алгоритм действий, как я понимаю, такой:
1. Юзер что-нибудь рисует.
2. Flash это дело переводит в BitmapData.
3. Передает серверу "набор пикселей".
4. Сервер это дело сохранят в *.png, *.jpeg - не усть важно.

Поправте меня, если не прав. Если теория верна, то с практикой возникли проблемы (а именно тот самый gateway.php).

etc 06.05.2008 12:55

Там написаны требования к серверной стороне аж отдельным абзацем со ссылкой на то, что нужно.

mixery 06.05.2008 13:38

Все были нубами, в т.ч. и а нглийском :)
Нашел еще один пример сохранения http://www.flash-db.com/Tutorials/snapshot/
Кажется, что он проще- там не нужно ничего еще, кроме того, что а врхиве. Тема не закрыта, уверен появятся еще трудности :)

mixery 06.05.2008 14:13

Этот способ не подходит - нужно сделать совсем все просто, swf-ка & php который все это дело сохранит. Чтобы ничего лишнего на сервер не ствить. Такие варианты существуют??

mixery 10.05.2008 10:36

Итак, снова здравствуйте. После долгих поисков по буржуйским сайтам я нашел примерно то, что нужно:
Как обычно в первом кадре-
Код:

import flash.display.BitmapData;
Butt.onPress = function() {
        output();
};
function output() {
        snap = new BitmapData(mc._width, mc._height);
        snap.draw(mc);
        var pixels:Array = new Array();
        var w:Number = snap.width;
        var h:Number = snap.height;
        for (var a = 0; a<=w; a++) {
                for (var b = 0; b<=h; b++) {
                        var tmp = snap.getPixel(a, b).toString(16);
                        pixels.push(tmp);
                }
        }
        var output:LoadVars = new LoadVars();
        output.img = pixels.toString();
        output.height = h;
        output.width = w;
        output.send("show.php", "output", "POST");
}
stop();

//имя мувика-картинки "mc"

& show.php-
Код:

<?php
        $data = explode(",", $_POST['img']);
        $width = $_POST['width'];
        $height = $_POST['height'];
        $image=imagecreatetruecolor( $width ,$height );
        $background = imagecolorallocate( $image ,0 , 0 , 0 );
        //Copy pixels
        $i = 0;
        for($x=0; $x<=$width; $x++){
                for($y=0; $y<=$height; $y++){
                        $int = hexdec($data[$i++]);
                        $color = ImageColorAllocate ($image, 0xFF & ($int >> 0x10), 0xFF & ($int >> 0x8), 0xFF & $int);
                        imagesetpixel ( $image , $x , $y , $color );
                }
        }
        //Output image and clean
        header( "Content-type: image/jpeg" );
        ImagePNG( $image );
        imagedestroy( $image );       
?>

Доработать, чтобы сохранялось в отдельный файл, для более-менее опытного PHP-программиста не составит проблемы.

Разработка продолжается, о процесссе сообщать нужно? :) Да, все это на AS2 делается.

Psycho Tiger 10.05.2008 11:38

-_-
Подобная задача заставила перейти меня на ас3.
Когда ты оттчишь этот метод до блеска и все будет летать как на ас3 (а может уже и 4) это будет попросту никому не будет нужно, в том числе и тебе. Зачем использовать язык, который уступает в быстродействии и возможностях более его новой версии?

mixery 10.05.2008 14:17

*offtop
Дело в том, что я пока до конца не освоил AS2 и нехочу переходить на AS3, т.к. он сложнее (ну немного, да?). И исходников (по которым всегда проще разбираться) в инете на AS2 больше, хоть и на AS3 растет их количество. И совсем-совсем до блеска можно и не вылизывать ;) (хоть и нужно к этому стремиться)

Все ИМХО.

MrPoma 10.05.2008 16:27

Цитата:

Сообщение от mixery
Не хочу переходить на AS3, т.к. он сложнее.

Ошибочное предположение.

mixery 11.05.2008 10:59

Возможно, но все же. Следущий проект попробую начать на AS3 :)

А сейчас вот еще вопрос (не буду создавать тему отдельную): есть в рисовалке "инструмент" карадаш/кисть. Линии нормально рисую (т.е. нажал и пошевелил мышь-вот линия), но чтобы просто при клике оставался след карандаша (точка) сделать не получается :( Подскажите как это реализовать??

Psycho Tiger 11.05.2008 12:42

lineTo&moveTo?
Я делал так (моя рисовалка была без зума, поэтому мне это не критично)
Код:

//ну там всякие подготовки линиям
moveTo(_xmouse,_ymouse);
lineTo(_xmouse+1,_ymouse+1);

Цитата:

Ошибочное предположение.
Кому как, я уже привык все делать через опу, а ас3 этого не позволяет :)
Мне он сложнее в несколько раз, я как будто учу совершенно новый язык.

mixery 12.05.2008 01:07

Цитата:

Кому как, я уже привык все делать через опу, а ас3 этого не позволяет
Мне он сложнее в несколько раз, я как будто учу совершенно новый язык.
Дадададаааааа, соглашаюсь с каждым словом +)

lineTo&moveTo - да. Уже склонялся сам к такому решению вопроса, но как-то это все-таки через ж, а очется уже "через голову" начинать писать код.
А при перемещении курсора получается рисуется линия шире на +1? И что, если выбрать размер кисти в 1px, то рисуется в 2px?? Может нужно поставить значение 0,1???

*off
Неужели каждый начинающий флешер делает плеер (mp3 а потом flv), рисовалку и фотогалерею?? ))))

Wolsh 12.05.2008 09:38

1. Просто рисуется линия длиной 1 пиксель. Это выглядит почти как точка)))
2. Обычно flv - раньше. Хотя не знаю, смотря кто наверно. Я вот мп3 только сейчас начал, зато сразу на классах))))), а флв уже раз десять делал - но это связано с работой, промосайты фильмов и т.п.

alexcon314 12.05.2008 10:30

mixery, еще ссылка на BitMapExporter. возможно вам она не попадалась.

http://www.quasimondo.com/archives/000572.php

chingachgoog 12.05.2008 10:47

Цитата:

Сообщение от Psycho Tiger (Сообщение 738348)
-_-
Подобная задача заставила перейти меня на ас3.
Когда ты оттчишь этот метод до блеска и все будет летать как на ас3 (а может уже и 4) это будет попросту никому не будет нужно, в том числе и тебе. Зачем использовать язык, который уступает в быстродействии и возможностях более его новой версии?

А что же такое у AS3 летает, что лишь ползет у AS1? И какие такие возможности есть у AS3, что сразу поднимают его над AS1/AS2?
PS
Что-то я не увидел у mixery AS2 - обычный AS1 осложненный типизацией :)

mixery 13.05.2008 12:38

Цитата:

Что-то я не увидел у mixery AS2 - обычный AS1 осложненный типизацией
А я и не говорил, что тут используется ТОЛЬКО AS2 :) AS3 не используется, эт точно.

Цитата:

mixery, еще ссылка на BitMapExporter. возможно вам она не попадалась.

http://www.quasimondo.com/archives/000572.php
Видел ее, но там нужно на сервер ставить библиотеку GD, чтобы сохранять изображения, мне, к сожалению, это не подходит. Оттуда можно взять "инструмент" к рисовалке. К стати, может у кого уже есть заготовки? Можете поделиться??

И еще вопрос, после того, как нарисована линия (фигура), то она "висит" в векторе, а в приведенном выше примере (http://www.quasimondo.com/archives/000572.php) при увеличении появилась пикселявость. Я вот думаю, если юзер нарисует картинку с N линиями (фигурами), то однажды Flash начнет тормозить, => нужно ли переводить вектор в растр? И где почитать об этом? (В хелпе по-любому есть, как называется?)

chingachgoog 14.05.2008 11:25

Цитата:

Сообщение от mixery (Сообщение 738872)
А я и не говорил, что тут используется ТОЛЬКО AS2 :)

А тут AS2 кода ВООБЩЕ нет. :)

Цитата:

Сообщение от mixery (Сообщение 738872)
И еще вопрос, после того, как нарисована линия (фигура), то она "висит" в векторе, а в приведенном выше примере (http://www.quasimondo.com/archives/000572.php) при увеличении появилась пикселявость. Я вот думаю, если юзер нарисует картинку с N линиями (фигурами), то однажды Flash начнет тормозить, => нужно ли переводить вектор в растр? И где почитать об этом? (В хелпе по-любому есть, как называется?)

Называется BitmapData.
Иногда, когда у iNils работает его сайт, можно прочитать переведенный хелп:
http://help.inils.ru/flash8/

iNils 14.05.2008 11:32

Цитата:

Сообщение от chingachgoog (Сообщение 739056)
Иногда, когда у iNils работает его сайт

А когда он не работает?

chingachgoog 14.05.2008 11:37

Цитата:

Сообщение от iNils (Сообщение 739059)
А когда он не работает?

Около 10:35 не открывался у меня. Да и бывает иногда такое...

AlexDesinger 14.05.2008 17:03

Народ сорри что сразу не понял что речь имено о as2 идет, я ваще в шоке - где-то пол года назад я поднимал эту тему и все говорили что это можно делать только на as3!!! Я даже написал на нем рисовалку, но что-то мне этот язык не очень..он явно для программистов и художники и дизайнеры будут долго к нему привыкать...

chingachgoog 14.05.2008 17:20

:)
Если функционал AVM1 сравняют с AVM2, то на AS3 будут писать только либо упертые си-программисты (это не ругательство), либо команды программистов.

etc 14.05.2008 22:41

Цитата:

Сообщение от chingachgoog (Сообщение 739146)
:)
Если функционал AVM1 сравняют с AVM2

Этого никогда не будет.

chingachgoog 14.05.2008 23:49

Цитата:

Сообщение от __etc (Сообщение 739229)
Этого никогда не будет.

Никогда не говори никогда ©
Упадут продажи продукта, например, и все - переиграют обратно. У адобовцев уже были преценденты.
Хотя может новый движок (астра какая-нибудь) опять универсальным станет. Кто знает что будет? Я вот не знаю.

mixery 15.05.2008 10:32

Цитата:

все говорили что это можно делать только на as3!!!
Цитата:

Кто знает что будет?
Я однажды доделаю это на AS2. У кого-нибудь есть какие-нибудь "инструменты" для рисовалки? А то мы немного отвлеклись от темы +)

chingachgoog 15.05.2008 11:21

У меня, например, отличная рисовалка на AS1.
А в чем проблема вообще с рисовалкой? Рисуете методами рисования мувиклипа. Снимаете скриншот и отображаете уже битмапдату. Тоже с ластиком, только blendMode устанавливаете в "erase".
По-моему главная проблема - передать массив точек на сервер в сжатом виде, т.е. создать алгоритм сжатия.

mixery 15.05.2008 11:40

Поделишься? ) или на каком сайте посмотреть можно?

А если без сжатия передавать, то скрипт PHP сожмет сам??

chingachgoog 15.05.2008 12:54

1) Могу поделиться ноу-хау, т.к. код не мой.
Но, правда, не вижу никаких трудностей с самой рисовалкой. Ничего сложного там нет вообще. Надо было бы - написал бы на раз. Мне бы даже лень было бы заморачиваться с разбором чужого исходника, кроме как понять принцип (а я его уже описал)
2) Это не сайте - локальное приложение.
3) Смысл сжатия ДО передачи на сервер в выигрыше времени передачи данных. Разумеется потом сервер сожмет данные в нужный графический формат (jpg, например)

Psycho Tiger 15.05.2008 13:43

Цитата:

Сообщение от chingachgoog (Сообщение 738613)
А что же такое у AS3 летает, что лишь ползет у AS1? И какие такие возможности есть у AS3, что сразу поднимают его над AS1/AS2?
PS
Что-то я не увидел у mixery AS2 - обычный AS1 осложненный типизацией :)

AS2: появились фильтры, bitmapData
AS3: сизуализатор музыки, математика быстрее на 40%, более гибкий язык, byteArray и прочие очень вкусные полезности.

Даже без этого - 40% - это не шутки

iNils 15.05.2008 13:54

Цитата:

Сообщение от Psycho Tiger (Сообщение 739350)
математика быстрее на 40%

Не "на", а "до". То есть вполне может работать с той же скоростью. Да и кроме как в 3D больше огромных расчетов то и нет. В основном все опять упирается в графику, которая с такой же скоростью и работает.

Psycho Tiger 15.05.2008 14:44

Согласен, но не у всех мощные 128 ядерные компьютеры. Даже если удастся выжать 5% лишней быстродейственности - стоит это делать. Казалось бы - ерунда, а эти 5% могут оказаться той гранью, на которой флэшка тормозит у кого и не тормозит. В аркадных играх и прочих на рекцию это очень важно.
(все вышенаписаное мой личный бред и мое личное ИМХО)

chingachgoog 15.05.2008 14:48

Цитата:

Сообщение от Psycho Tiger (Сообщение 739350)
AS2: появились фильтры, bitmapData

Они и в AS1 появились :)

Цитата:

Сообщение от Psycho Tiger (Сообщение 739350)
AS3: сизуализатор музыки, математика быстрее на 40%, более гибкий язык, byteArray и прочие очень вкусные полезности.

То, что есть в AVM2 и нет в AVM1 можно пересчитать по пальцам:
да byteArray есть, да музыку по частотам можно посмотреть, что еще? Много ли "прочих вкусных полезностей"? Ну например останов всех циклов сразу. Что разве трудно будет адобовцам это на AVM1 сделать? Что еще?
Про "более гибкий язык" не рассказывайте - это зависит от задачи и личных предпочтений программиста.

Цитата:

Сообщение от Psycho Tiger (Сообщение 739350)
Даже без этого - 40% - это не шутки

А вы приведите пример, когда один и тот же код на AVM1 и AVM2 выполняется с такой разницей?

Волгоградец 15.05.2008 14:54

Гм... Адобовцы утверждают, что AS3.0 работает до 10 раз быстрее предыдущих версий языка. А это не 40% - это 1000%!!! Я видел в сети примеры AS3.0, которые на AS2.0 переделать вряд ли возможно - например Box2DFlashAS3.0.

chingachgoog 15.05.2008 14:58

Адобовцы могут утверждать, что угодно, лишь бы их продукт купили.


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

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