Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Загрузка битмапы на сервер (http://www.flasher.ru/forum/showthread.php?t=169249)

TanaTiX 30.09.2011 23:53

Загрузка битмапы на сервер
 
Пытаюсь загрузить на сервер битмапу.
Код AS3:

var image:Sprite = new Sprite();
image.x = 200;
image.y = 10;
image.graphics.beginFill(0xffc0c0);
image.graphics.drawRect(0, 0, 1000, 1000);
image.graphics.endFill();
 
var bmd:BitmapData = new BitmapData(image.width, image.height, true);
bmd.draw(image);
bmd.perlinNoise(500, 500, 5, 5, true, true);
var jpg:JPGEncoder = new JPGEncoder(50);
var ba:ByteArray = jpg.encode(bmd);
 
var fileContentType:String = 'image/jpeg';
var mpLoader:MultipartURLLoader = new MultipartURLLoader();
mpLoader.addEventListener(Event.COMPLETE, onMultiUploadComplete, false, 0, true);
mpLoader.addFile(ba, "photo.jpg", "photo", fileContentType);
mpLoader.load("http://site.com/test");

Мои трэйсы показывают, что все передано, на сервере запрос обрабатывается, но данные не поступают.
Искал и гуглом, и по форуму, находил различные варианты, но что-то попытка их применить на деле ничем хорошим не заканчивается.
Укажите на ошибки или ткните носом в работающий вариант. Заранее спасибо.

stweet 01.10.2011 00:25

Было дело, было. Я сохранял картинку самим php скриптом а передавал только "ByteArray".
В данном случае вам требуется только передать ширину и высоту картинки, ну и конечно сам байт массив.

передаем из флеша

Код AS3:

var urlVarible:URLVariables = new URLVariables();
    urlVarible.img        = myByteCode;
    urlVarible.width        = imgWidth;
    urlVarible.height        = imgHeight;

а скрипт на сервере выполняет следующее

PHP код:

<?php
    $data 
explode(","$_POST['img']);
    
    
$width $_POST['width'];
    
    
$height $_POST['height'];
    
    
$image=imagecreatetruecolor$width ,$height );
    
    
$background imagecolorallocate$image ,);
    
    
//Copy pixels
    
$i 0;
    
    for(
$x=0$x<=$width$x++)
    {
        for(
$y=0$y<=$height$y++)
        {
            
$int hexdec($data[$i++]);
        
            
$color ImageColorAllocate ($image0xFF & ($int >> 0x10), 0xFF & ($int >> 0x8), 0xFF $int);
        
            
imagesetpixel $image $x $y $color );
        }
    }
    
    
//picture.jpg - имя(можно любое)
    
    
$rr imageJPEG($image"picture.jpg"100);
    
    if(
$rr)
    {
        
//эта строка передаётся во флеш если картинка сохранена успешно
        
echo('complete!');
    }else{
        echo(
'not save!');
    }
    
imagedestroy$image );
?>

ну, если подойдет такой вариант.

TanaTiX 01.10.2011 00:52

stweet, спасибо конечно, но при использовании данного варианта картинка формируется на сервере. Хотелось бы не нагружать сервер просчетами, которые можно выполнить на клиенте.

Upd. Отпишусь тут, чтоб не поднимать тему. Проблема оказалась на серверной стороне.

flax4Noob 01.10.2011 04:07

Цитата:

Сообщение от TanaTiX (Сообщение 1035964)
Пытаюсь загрузить на сервер битмапу.
Код AS3:

 
[SKIPED]
                        mpLoader.load("http://site.com/test");

Мои трэйсы показывают, что все передано, на сервере запрос обрабатывается, но данные не поступают.

Если данные "улетают", то проблема может быть на стороне сервера. Например, превышение максимального размера post-запроса, или в принимающем скрипте. Попробуйте создать меленькую картинку. А в скрипте-приемнике Сдампить POST-запрос в файл со всеми заголовками. Ну и смотрите логи веб-сервера. Не зная типа сервера и языка скрипта больше посоветовать сложно. Если, конечно, от флеша уходит "хорошо". Тема разжевана на форуме весьма тщательно.

Добавлено через 5 минут
http://www.flasher.ru/forum/showpost...3&postcount=11
поиск рулит.


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

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