Просмотр полной версии : Как сохранить в *.PNG?
Здравствуйте! Проблема такая- есть "рисовалка", примерно как Граффити в контакте, нужно чтобы юзер что-либо в ней нарисовал, а потом это "что-то" сохранилось на сервере в *.PNG , *.JPEG, не важно. Каким вообще образом это осуществимо? На Вконтакте используется PNGEncoder.as, но как там что-ума не приложу (т.к. самого этого файла у меня нет :( )
http://ink.envisionext.com/swf2png/index.php
Все замечательно, но
http://ink.envisionext.com/swf2png/index.php---->Forbidden
You don't have permission to access / on this server. :(
Еще вопрос-это возможно будет сделать в Flash-8?
http://www.5etdemi.com/blog/archives/2006/10/the-ultimate-as2-bitmapdata-saving-solution/
AlexDesinger
04.05.2008, 16:48
у меня есть этот код, который сохраняет в png на сервак, есть даже чтобы сохранял в jpg - вся фигня в том что они работают на as 3 ...мне бы тоже бы как нть состыковать это с as2 но тут мне никто помочь не смог. может щас кто подскажет....:o
AlexDesigner - вы открывали ссылку?
Заголовок статьи: The ultimate AS2 BitmapData saving solution.
Скачал, пытаюсь все разобраться, но там нужен gateway.php, а в архиве его нет. Подскажите, что делать! =) Кто уже разбирался с этим??
mixery, вы статью по ссылке читали или просто архив скачали?
Конечно читал! И гуглил долго до того, как создал тему. но с английским не очень хорошо, методом тыка пытаюсь разобраться. Но не очень-то и получается (
Алгоритм действий, как я понимаю, такой:
1. Юзер что-нибудь рисует.
2. Flash это дело переводит в BitmapData.
3. Передает серверу "набор пикселей".
4. Сервер это дело сохранят в *.png, *.jpeg - не усть важно.
Поправте меня, если не прав. Если теория верна, то с практикой возникли проблемы (а именно тот самый gateway.php).
Там написаны требования к серверной стороне аж отдельным абзацем со ссылкой на то, что нужно.
Все были нубами, в т.ч. и а нглийском :)
Нашел еще один пример сохранения http://www.flash-db.com/Tutorials/snapshot/
Кажется, что он проще- там не нужно ничего еще, кроме того, что а врхиве. Тема не закрыта, уверен появятся еще трудности :)
Этот способ не подходит - нужно сделать совсем все просто, swf-ка & php который все это дело сохранит. Чтобы ничего лишнего на сервер не ствить. Такие варианты существуют??
Итак, снова здравствуйте. После долгих поисков по буржуйским сайтам я нашел примерно то, что нужно:
Как обычно в первом кадре-
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) это будет попросту никому не будет нужно, в том числе и тебе. Зачем использовать язык, который уступает в быстродействии и возможностях более его новой версии?
*offtop
Дело в том, что я пока до конца не освоил AS2 и нехочу переходить на AS3, т.к. он сложнее (ну немного, да?). И исходников (по которым всегда проще разбираться) в инете на AS2 больше, хоть и на AS3 растет их количество. И совсем-совсем до блеска можно и не вылизывать ;) (хоть и нужно к этому стремиться)
Все ИМХО.
Не хочу переходить на AS3, т.к. он сложнее.Ошибочное предположение.
Возможно, но все же. Следущий проект попробую начать на AS3 :)
А сейчас вот еще вопрос (не буду создавать тему отдельную): есть в рисовалке "инструмент" карадаш/кисть. Линии нормально рисую (т.е. нажал и пошевелил мышь-вот линия), но чтобы просто при клике оставался след карандаша (точка) сделать не получается :( Подскажите как это реализовать??
Psycho Tiger
11.05.2008, 12:42
lineTo&moveTo?
Я делал так (моя рисовалка была без зума, поэтому мне это не критично)
//ну там всякие подготовки линиям
moveTo(_xmouse,_ymouse);
lineTo(_xmouse+1,_ymouse+1);
Ошибочное предположение.
Кому как, я уже привык все делать через опу, а ас3 этого не позволяет :)
Мне он сложнее в несколько раз, я как будто учу совершенно новый язык.
Кому как, я уже привык все делать через опу, а ас3 этого не позволяет
Мне он сложнее в несколько раз, я как будто учу совершенно новый язык.
Дадададаааааа, соглашаюсь с каждым словом +)
lineTo&moveTo - да. Уже склонялся сам к такому решению вопроса, но как-то это все-таки через ж, а очется уже "через голову" начинать писать код.
А при перемещении курсора получается рисуется линия шире на +1? И что, если выбрать размер кисти в 1px, то рисуется в 2px?? Может нужно поставить значение 0,1???
*off
Неужели каждый начинающий флешер делает плеер (mp3 а потом flv), рисовалку и фотогалерею?? ))))
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
-_-
Подобная задача заставила перейти меня на ас3.
Когда ты оттчишь этот метод до блеска и все будет летать как на ас3 (а может уже и 4) это будет попросту никому не будет нужно, в том числе и тебе. Зачем использовать язык, который уступает в быстродействии и возможностях более его новой версии?
А что же такое у AS3 летает, что лишь ползет у AS1? И какие такие возможности есть у AS3, что сразу поднимают его над AS1/AS2?
PS
Что-то я не увидел у mixery AS2 - обычный AS1 осложненный типизацией :)
Что-то я не увидел у 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
А я и не говорил, что тут используется ТОЛЬКО AS2 :)
А тут AS2 кода ВООБЩЕ нет. :)
И еще вопрос, после того, как нарисована линия (фигура), то она "висит" в векторе, а в приведенном выше примере (http://www.quasimondo.com/archives/000572.php) при увеличении появилась пикселявость. Я вот думаю, если юзер нарисует картинку с N линиями (фигурами), то однажды Flash начнет тормозить, => нужно ли переводить вектор в растр? И где почитать об этом? (В хелпе по-любому есть, как называется?)
Называется BitmapData.
Иногда, когда у iNils работает его сайт, можно прочитать переведенный хелп:
http://help.inils.ru/flash8/
Иногда, когда у iNils работает его сайтА когда он не работает?
chingachgoog
14.05.2008, 11:37
А когда он не работает?
Около 10:35 не открывался у меня. Да и бывает иногда такое...
AlexDesinger
14.05.2008, 17:03
Народ сорри что сразу не понял что речь имено о as2 идет, я ваще в шоке - где-то пол года назад я поднимал эту тему и все говорили что это можно делать только на as3!!! Я даже написал на нем рисовалку, но что-то мне этот язык не очень..он явно для программистов и художники и дизайнеры будут долго к нему привыкать...
chingachgoog
14.05.2008, 17:20
:)
Если функционал AVM1 сравняют с AVM2, то на AS3 будут писать только либо упертые си-программисты (это не ругательство), либо команды программистов.
:)
Если функционал AVM1 сравняют с AVM2
Этого никогда не будет.
chingachgoog
14.05.2008, 23:49
Этого никогда не будет.
Никогда не говори никогда ©
Упадут продажи продукта, например, и все - переиграют обратно. У адобовцев уже были преценденты.
Хотя может новый движок (астра какая-нибудь) опять универсальным станет. Кто знает что будет? Я вот не знаю.
все говорили что это можно делать только на as3!!!
Кто знает что будет?
Я однажды доделаю это на AS2. У кого-нибудь есть какие-нибудь "инструменты" для рисовалки? А то мы немного отвлеклись от темы +)
chingachgoog
15.05.2008, 11:21
У меня, например, отличная рисовалка на AS1.
А в чем проблема вообще с рисовалкой? Рисуете методами рисования мувиклипа. Снимаете скриншот и отображаете уже битмапдату. Тоже с ластиком, только blendMode устанавливаете в "erase".
По-моему главная проблема - передать массив точек на сервер в сжатом виде, т.е. создать алгоритм сжатия.
Поделишься? ) или на каком сайте посмотреть можно?
А если без сжатия передавать, то скрипт PHP сожмет сам??
chingachgoog
15.05.2008, 12:54
1) Могу поделиться ноу-хау, т.к. код не мой.
Но, правда, не вижу никаких трудностей с самой рисовалкой. Ничего сложного там нет вообще. Надо было бы - написал бы на раз. Мне бы даже лень было бы заморачиваться с разбором чужого исходника, кроме как понять принцип (а я его уже описал)
2) Это не сайте - локальное приложение.
3) Смысл сжатия ДО передачи на сервер в выигрыше времени передачи данных. Разумеется потом сервер сожмет данные в нужный графический формат (jpg, например)
Psycho Tiger
15.05.2008, 13:43
А что же такое у AS3 летает, что лишь ползет у AS1? И какие такие возможности есть у AS3, что сразу поднимают его над AS1/AS2?
PS
Что-то я не увидел у mixery AS2 - обычный AS1 осложненный типизацией :)
AS2: появились фильтры, bitmapData
AS3: сизуализатор музыки, математика быстрее на 40%, более гибкий язык, byteArray и прочие очень вкусные полезности.
Даже без этого - 40% - это не шутки
математика быстрее на 40%Не "на", а "до". То есть вполне может работать с той же скоростью. Да и кроме как в 3D больше огромных расчетов то и нет. В основном все опять упирается в графику, которая с такой же скоростью и работает.
Psycho Tiger
15.05.2008, 14:44
Согласен, но не у всех мощные 128 ядерные компьютеры. Даже если удастся выжать 5% лишней быстродейственности - стоит это делать. Казалось бы - ерунда, а эти 5% могут оказаться той гранью, на которой флэшка тормозит у кого и не тормозит. В аркадных играх и прочих на рекцию это очень важно.
(все вышенаписаное мой личный бред и мое личное ИМХО)
chingachgoog
15.05.2008, 14:48
AS2: появились фильтры, bitmapData
Они и в AS1 появились :)
AS3: сизуализатор музыки, математика быстрее на 40%, более гибкий язык, byteArray и прочие очень вкусные полезности.
То, что есть в AVM2 и нет в AVM1 можно пересчитать по пальцам:
да byteArray есть, да музыку по частотам можно посмотреть, что еще? Много ли "прочих вкусных полезностей"? Ну например останов всех циклов сразу. Что разве трудно будет адобовцам это на AVM1 сделать? Что еще?
Про "более гибкий язык" не рассказывайте - это зависит от задачи и личных предпочтений программиста.
Даже без этого - 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
Адобовцы могут утверждать, что угодно, лишь бы их продукт купили.
chingachgoog, а скажите, есть вообще задачи, которые Вы не смогли решить на АС2?
chingachgoog
15.05.2008, 15:26
Пожалуй нет задачи, которую я бы не смог решить на AS1, кроме написания графического эквалайзера. :)
Могу поделиться ноу-хау, т.к. код не мой.
Однозначно- делись!
А учиться нужно только по хелпу? Я, например, не прочь поразбираться в чужом коде, чтобы понять как, что, где, т.к. только начинаю учить AS и многое еще не понятно. И учусь я не на "информатика", а совсем на другой специальности. Мне только в школе преподавали Flash, но я знал его лучше учителя и ничего нового от нее не узнал (к сожалению). Так что разбираться в чужих исходниках не считаю зазорным ничуть (главное не тупо копировать, а писать самому, если возможно).
chingachgoog
15.05.2008, 18:13
Однозначно- делись!
А что не ясно конкретно?
AlexDesinger
15.05.2008, 18:15
Народ вы слишком ушли от темы)))
Кто нть может поделиться кодом или ссылкой для тех кто на бронепоезде - чтобы не было заморочек для того чтобы сохранить на сервак из клипа изображение в формате jpeg под разными именами?
P.S. После того как я узнал чот as2 может выполнять такое...только неведомая мне сила сможет заставить меня перейти на as3
Эээ, я про исходник +)
Есть "рабочий стол" - тут кнопки выбора инструментов, палитра и т.п. Есть мувик "mc", собственно в котором и происходит процесс рисования. Как мне из первого передать переменную во второй? (т.е. нажал на карандаш- в mc можно рисовать карандашем, нажал на другой инструмент- рисуешь другим)
AlexDesinger, читай тему сначала. Там есть в том числе PHP код, который нужно доработать немного и будет сохранять так, как тебе нужно +)
chingachgoog
16.05.2008, 12:38
Эээ, я про исходник +)
Про какой исходник?
Как мне из первого передать переменную во второй? (т.е. нажал на карандаш- в mc можно рисовать карандашем, нажал на другой инструмент- рисуешь другим)
Это вся проблема темы "Как сохранить в *.PNG?"?
У меня, например, отличная рисовалка на AS1.
1) Могу поделиться
Я вот о чем.
chingachgoog
16.05.2008, 14:30
У меня, например, отличная рисовалка на AS1.
...
1) Могу поделиться
Я вот о чем.
В оригинале:
1) Могу поделиться ноу-хау, т.к. код не мой.
Т.е. если вам какие-то принципиальные вопросы по рисовалке не ясны, то расскажу.
Хорошо, мы друг-друга немного не поняли. Вопросы про рисовалку здесь задавать или отдельную тему плодить?
chingachgoog
16.05.2008, 15:17
Пишите где хотите, если что - модераторы перенесут (теме не соответствует, но в топике об этом говориться).
Ну так вот. Есть два мувика. Нужно чтобы из одного переменная была передана в другой, при нажатии на кнопку. Если делаю простое присваивание вида
tool = pen;
а в другом мувике
if (tool == pen){
trace ("tool == pen");
};
то сразу выдает в output "tool == pen" :(
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.