Флеш "Графити" как вКонтакте.ру

Статус
В этой теме нельзя размещать новые ответы.

lifediz

Yii Framework developer
Регистрация
7 Июн 2008
Сообщения
385
Реакции
515
Кому надо забирайте...утащено мной(надеюсь написал в тот форум куда надо :nezn:)

Для просмотра ссылки Войди или Зарегистрируйся
 

Вложения

  • Graffity_by Life.rar
    141,8 KB · Просмотры: 256
кто нить обяснит как сохранять нарисованые изображения ?
 
Вытащить флэху порой плёвое дело. А вот получить соурс, а именно он необходим, бывает сложнее. Массивные флэшки почти не поддаются декодингу.
Всё что я понял:

сейф картинки (Drawing.as:(
PHP:
function saveClicked(param1)
        {
            var jpgSource:BitmapData;
            var transMatr:Matrix;
            var encoder:JPEGAsyncEncoder;
            var ImageData:*;
            var header:URLRequestHeader;
            var postAddr:*;
            var jpgURLRequest:URLRequest;
            var eventObject:* = param1;
            if (doNotSave)
            {
                resDlg.ShowDialog(resultClick);
                return;
            }// end if
            jpgSource = new BitmapData(700, 399, false);
            transMatr = new Matrix();
            transMatr.translate(-8, -10.4);
            jpgSource.draw(drwSurface, transMatr, null, null, new Rectangle(0, 0, 700, 399));
            dlg.visible = false;
            dlg.dialogType = "save";
            if (lng == "en")
            {
                dlg.dialogText = "Encoding to JPEG format";
            }
            else
            {
                dlg.dialogText = "Сжатие JPEG изображения ";
            }// end else if
            dlg.progressBar.visible = true;
            dlg.noButton.visible = false;
            dlg.yesButton.x = 134;
            dlg.yesButton.label = "OK";
            dlg.yesButton.visible = false;
            dlg.ShowDialog(null);
            if (isJPG)
            {
                encoder = new JPEGAsyncEncoder(75);
                encoder.PixelsPerIteration = 512;
                encoder.addEventListener(JPEGAsyncCompleteEvent.JPEGASYNC_COMPLETE, encodeDone);
                encoder.encode(jpgSource);
            }
            else
            {
                ImageData = PNGEnc.encode(jpgSource, 1);
                dlg.Close();
                if (lng == "en")
                {
                    dlg.dialogText = "Saving image";
                }
                else
                {
                    dlg.dialogText = "Сохранение изображения ";
                }// end else if
                header = new URLRequestHeader("Content-type", "image/jpeg");
                postAddr = LoaderInfo(root.loaderInfo).parameters.action;
                jpgURLRequest = new URLRequest(postAddr);
                jpgURLRequest.method = URLRequestMethod.POST;
                jpgURLRequest.requestHeaders.push(header);
                jpgURLRequest.data = ImageData;
                dlg.ShowDialog(null);
                try
                {
                    responseCode = -1;
                    loader.load(jpgURLRequest);
                }// end try
                catch (error:)
                {
                }// end else if
            }// end catch
            return;
        }// end function

Видно что файл куда передаётся задаётся чарез flashvars
Вбиваем:
PHP:
action=http:/**/jpg_encoder_download.php
Примерное содержание jpg_encoder_download.php
PHP:
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
$image_data = $GLOBALS["HTTP_RAW_POST_DATA"] ;
$filename_to_save = "img.jpg";
if(isset($image_data)){
 $png_file = fopen($filename_to_save, "wb") or die("File not opened!");
 if($png_file){
    set_file_buffer($png_file, 20);
    fwrite($png_file, $image_data);
    fclose($png_file);
 }
}
?>

Картинка сохраняется, но окно о сейфе не хочет проходить. В чём дело я заметить не могу. Кто видит?
 
Ну наконецто хоть кто-то хоть где-то показал как в жпег сохранять.:thenks:

а насчет окошка сейва, может я ошибаюсь, но вот создания его там нет. и по скрипту оно вообще должно на рабочей области лежать и лишь видимость меняться. :nezn:
 
По идеи хрень
PHP:
 dlg.ShowDialog(null);
Должна сррывать окно. При чём нет никаких условий и она идёт сразу после передачи массива с картинкой. Из чего можно предположить что флэш не завершает передачу, возможно скрипт должен что-то вернуть. :nezn:
 
Довольно хорошая задумка все-таки, ВКонтакте поставил.
А вот не подскажет никто ссылкочку на сайтик с онлайн многопользовательской рисовалкой? (т.е. рисует несколько человек сразу (сетевая)) что-то типа чата, но с рисунком))
 
ну вроде Nassi Network Assistant ну это программа-чат,по ней могут все кто в чате рисовать одновременно.
 
// а сохранение картинки куда прописывать? в страницу или надо исходник flash раскрывать?
понял, открыл source. И как его к сайту теперь прикрутить? )
 
да вот если можно небольшой мануал это было бы неплохо)
 
инетесная штука и в самом деле...я так и не понял, можно как-то из флеша в джпег сохранять?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху