首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Facebook Graph Api上传BitmapData

使用Facebook Graph Api上传BitmapData
EN

Stack Overflow用户
提问于 2011-02-01 10:19:54
回答 1查看 2.6K关注 0票数 0

我已经在互联网上到处寻找如何在他们的Graph Api中使用Facebook提供的PostRequest类,但我没有找到任何东西。我想知道如何使用它上传位图数据。它看起来一点也不动。

我使用了下面的代码,它起作用了:

代码语言:javascript
运行
复制
private function getSnapshot(e:MouseEvent):void 
{
    bmd = new BitmapData(vidDisplay.width, vidDisplay.height); 
    bmd.draw(vidDisplay);
    vidDisplay.previewImg.source = new Bitmap(bmd);

    isSnapshot = true;

    vidDisplay.upload_btn.enabled = true;
    vidDisplay.caption_txt.enabled = true;
    vidDisplay.browse_btn.enabled = false;
}

protected function upload(w:MouseEvent):void 
{
    var img:* = (isSnapshot) ? bmd : fileRef ;
    var values:Object = {message:vidDisplay.caption_txt.text, fileName:'FILE_NAME', image:img};

    fb.callApi("post", "me", "photos", values);

    vidDisplay.caption_txt.text = "";
    vidDisplay.upload_btn.enabled = false;
    vidDisplay.snapShot_btn.enabled = false;
}

然而,当我试图创建一个完整的函数来拍摄照片并直接上传时,它不起作用。起初,它是这样的:

代码语言:javascript
运行
复制
private function doTakeSnapshot(con:MovieClip, cap:String = null):void
{
    ExternalInterface.call("doAlert", "doTakeSnapshot");

    var bmd:BitmapData = new BitmapData(con.width, con.height);
    bmd.draw(con);

    if (cap == null) { cap = "Check out my photo!"; }
    var values:Object = {message:cap, image:bmd};

    doCallApi("post", "me", "photos", values);
}

然后我尝试使用PostRequest:

代码语言:javascript
运行
复制
private function doTakeSnapshot(con:MovieClip, cap:String = null):void
{
    ExternalInterface.call("doAlert", "doTakeSnapshot");

    var bmd:BitmapData = new BitmapData(con.width, con.height);
    bmd.draw(con);

    if (cap == null) { cap = "Check out my photo!"; }

    var ba:ByteArray = PNGEncoder.encode(bmd);
    var pr:PostRequest = new PostRequest();
    //var ba:ByteArray = pr.getPostData();
    pr.createPostData();
    pr.writePostData("fileName", "testtest");
    pr.writeFileData("fileName", ba, "image/png");
    pr.close();

    var byteArray:ByteArray = pr.getPostData();
    ExternalInterface.call("doAlert", "ByteArray = " + byteArray);

    var values:Object = {message:cap, image:byteArray};

    doCallApi("post", "me", "photos", values);
}

两者都不能工作,这让我感到困惑。第一个没有以任何方式编码就可以工作,所以当我尝试这样调用它时,我不明白为什么它不能工作。有什么帮助吗?

EN

回答 1

Stack Overflow用户

发布于 2011-02-13 10:56:29

您不必包装或编码位图数据。只需制作一个位图并将其放入您的对象中,如下所示:

代码语言:javascript
运行
复制
var bmd:BitmapData = new BitmapData(con.width, con.height);
bmd.draw(con); 
var bitmap:Bitmap = new Bitmap(bm);
var values:Object = {message:cap, image:bitmap};
fb.callApi("post", "me", "photos", values);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4858250

复制
相关文章

相似问题

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