Изображение из Flash BitmapData в PHP на веб-странице - PullRequest
0 голосов
/ 06 апреля 2011

Я пытаюсь отобразить изображение, экспортированное из флэш-памяти BitmapData, на базовой веб-странице.

Экспорт из флэш-памяти работает отлично:

import flash.display.BitmapData;
var vBitmap = new BitmapData(300, 400, true, 0x000000);
vBitmap.draw(themovieclip_mc);
btn1.onRelease = function() {
    var vLV = new LoadVars();
    vLV.tableData = new Array();
    for (i=0; i<300; i++) {
        for (j=0; j<400; j++) {
            vLV.tableData.push(vBitmap.getPixel(j, i));
        }
    }
    vLV.send("webpage.php", "_self", "POST");
};

Затем я получаю изображение вфайл webpage.php

    <?php
    $lv = $_POST['tableData'];
    $temp = explode(",",$lv);
    settype($temp[1],'integer');
    $img = imagecreatetruecolor(300,400);
    $k = 0;
    for($i=0; $i<300; $i++){
        for($j=0; $j<400; $j++){
            imagesetpixel($img,$j,$i,$temp[$k]);
            $k++;
        }
    }

$temporary_file_name = tempnam("/tmp");
imagejpeg($img,"$temporary_file_name",100);

?>

<html>
<img src="/tmp/<?php echo $temporary_file_name; ?>" />
<h1>Lorem ipsum</h1>
<p>lorem ipsum dolor sit amet</p>
</html>

вышеуказанный код НЕ работает, я не могу найти способ отобразить изображение, встроенное в веб-страницу.Любая помощь будет очень цениться.

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

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

Я не могу найти способ отобразить изображение, встроенное в веб-страницу

Нет хорошего способа сделать это. Вам нужно получить изображение из отдельного ресурса изображения, его нельзя обойти (кроме data: URI, но они не работают).

Вы можете записать файл аватара во временный файл:

$temporary_file_name = tempnam("/path/to/somedir");
imagejpeg($img,"$temporary_file_name",100);

затем в HTML выведите:

 <img src='/somedir/<?php echo $temporary_file_name; ?>' />  

вам потребуется добавить механизм удаления временного файла позже.

0 голосов
/ 13 апреля 2011

Итак, я наконец-то нашел свой путь через это.Возможно, это не лучший способ сделать это, но, по крайней мере, он работает.

//AS3

import com.adobe.images.JPGEncoder;

function createJpg(aMovieClip, aQuality){
    var vSource = new BitmapData(200, 304, true, 0 );
    vSource.draw(aMovieClip, new Matrix(1,0,0,1,100,152)); // decale de width/2 et height/2
    var vEncoder = new JPGEncoder(aQuality);
    var vByteArray = vEncoder.encode(vSource);

    return vByteArray;
};

// export image to server
function exportJpg(aMovieClip){
    var vByteArray = createJpg(aMovieClip, 80);
    var vRequest:URLRequest = new URLRequest('URL_TO_THE_PHP_FILE');
    var vLoader: URLLoader = new URLLoader();
    vRequest.contentType = 'application/octet-stream';
    vRequest.method = URLRequestMethod.POST;
    vRequest.data = vByteArray;
    navigateToURL(vRequest, "_self");
};

// save image on users computer
function saveJpg(aMovieClip, aString){
    var vByteArray = createJpg(aMovieClip, 80);
    var vFR = new FileReference();
    vFR.save(vByteArray, aString);
};

Затем файл PHP / HTML

<?php

if ( isset ( $GLOBALS["HTTP_RAW_POST_DATA"] )) {

    $img =  $GLOBALS["HTTP_RAW_POST_DATA"];
    $prefix = "foo";
    $path = "/full/server/path/to/directory/with/777/permissions";

    // give a unique name to the file
    $name = $prefix.md5(time().rand());

    $temporary_file_name = $path.'/'.$name.'.jpg';

    $fp = fopen($temporary_file_name, 'wb');    
    fwrite($fp, $img);
    fclose($fp);

    // find the name of the image without the full server path
    $array = explode("/", $temporary_file_name);
    $length = count($array);
    $filename = $array[$length - 1];

    //give a path to the image file
    $imagepath = "http://www.domain.com/directory/".$filename;


}else{
    // error : the POST data was not found
}

?>

<html>
<head>
</head>
<body>
    <h1>Lorem ipsum</h1>
    <p><img src="<?php echo $imagepath; ?>"</p>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...