首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图片从BitmapData到BitmapData再到网页

图片从BitmapData到BitmapData再到网页
EN

Stack Overflow用户
提问于 2011-04-06 16:37:45
回答 2查看 1.7K关注 0票数 0

我试图在一个基本的网页中显示一个从闪存BitmapData导出的图像。

从闪存导出的效果很好:

代码语言:javascript
复制
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文件中的图像

代码语言:javascript
复制
    <?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>

上面的代码不起作用,我找不到一种方法来显示嵌入在网页中的图像。任何帮助我们都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-13 15:14:26

所以,我终于找到了解决这个问题的方法。这可能不是最好的方法,但至少它是有效的。

代码语言:javascript
复制
//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文件

代码语言:javascript
复制
<?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>
票数 0
EN

Stack Overflow用户

发布于 2011-04-06 16:44:02

我假设将图像数据插入到网页中是您唯一的问题。(没有数据,就不可能知道图像生成过程本身有多好。)

我找不到一种方法来显示网页中嵌入的图像

没有任何好的方法可以做到这一点。您需要从单独的图像资源获取图像,这是没有办法的(除了data: URI,但那些是损坏的)。

您可以将头像文件写入临时文件:

代码语言:javascript
复制
$temporary_file_name = tempnam("/path/to/somedir");
imagejpeg($img,"$temporary_file_name",100);

然后在HTML中,输出:

代码语言:javascript
复制
 <img src='/somedir/<?php echo $temporary_file_name; ?>' />  

您必须添加一些机制,以便稍后删除临时文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5563588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档