Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
as3阶段到jpg字节数组到服务器端php问题_Php_Actionscript 3_Jpeg - Fatal编程技术网

as3阶段到jpg字节数组到服务器端php问题

as3阶段到jpg字节数组到服务器端php问题,php,actionscript-3,jpeg,Php,Actionscript 3,Jpeg,嗨,我想做个测试。嵌入一个swf,该swf将舞台的jpeg发送到保存到我的服务器的php脚本。我在这里陷入困境,无法让下面的工作 //----------------------------AS3 import com.adobe.images.JPGEncoder; import flash.events.MouseEvent; import flash.display.Sprite; var dot:Sprite = new Sprite() dot.graphics.beginFill(

嗨,我想做个测试。嵌入一个swf,该swf将舞台的jpeg发送到保存到我的服务器的php脚本。我在这里陷入困境,无法让下面的工作

//----------------------------AS3

import com.adobe.images.JPGEncoder;
import flash.events.MouseEvent;
import flash.display.Sprite;

var dot:Sprite = new Sprite()
dot.graphics.beginFill(1)
dot.graphics.drawCircle(550/2,400/2,40)
addChild(dot)

stage.addEventListener(MouseEvent.MOUSE_DOWN, saveJPG)

function saveJPG():void{


    var jpgSource:BitmapData = new BitmapData (stage.stageWidth, stage.stageHeight);
    jpgSource.draw(stage);

    var jpgEncoder:JPGEncoder = new JPGEncoder(85);
    var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);

    var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
    var jpgURLRequest:URLRequest = new URLRequest("jpg_encoder_download.php?name=sketch.jpg");
    jpgURLRequest.requestHeaders.push(header);
    jpgURLRequest.method = URLRequestMethod.POST;
    jpgURLRequest.data = jpgStream;
    navigateToURL(jpgURLRequest, "_blank");

}
//-----------------------php

<?php


if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
    // get bytearray
    $jpg = $GLOBALS["HTTP_RAW_POST_DATA"];

    imagejpeg( $jpg , "yes.jpg", 100  );
}

?>


在发布之前,您可能需要将byteArray编码为Base64,然后在服务器端使用PHP对其进行解码。但是您并没有真正说明什么不起作用…

您可能需要在发布byteArray之前将其编码为Base64,然后在服务器端使用PHP对其进行解码。但您并没有真正说出什么不起作用…

您缺少从位图数据到位图再到图像的图像转换

function createJPG():void{
  var finished1:BitmapData = new BitmapData ( stage.stageWidth, stage.stageHeight, true, 0xffffffff );
  finished1.draw( stage );

  // the key part you are missing
  var myImage:Image = new Image();
  myImage.load( new Bitmap(finished1) );
  myImage.content.width = stage.stageWidth;
  myImage.content.height = stage.stageHeight;

  var finished:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0xffffffff );
  finished.draw(myImage); 
  myImage = null;


  // encode the finished image so we can send the data to the server
  var encoder:JPEGEncoder = new JPEGEncoder();
  var data:ByteArray = encoder.encode(finished);
  var b64:Base64Encoder = new Base64Encoder()
  b64.encodeBytes( data )
return b64.toString();
}

看看这个,它将解释您所需要的一切

您缺少从位图数据到位图再到图像的图像转换

function createJPG():void{
  var finished1:BitmapData = new BitmapData ( stage.stageWidth, stage.stageHeight, true, 0xffffffff );
  finished1.draw( stage );

  // the key part you are missing
  var myImage:Image = new Image();
  myImage.load( new Bitmap(finished1) );
  myImage.content.width = stage.stageWidth;
  myImage.content.height = stage.stageHeight;

  var finished:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0xffffffff );
  finished.draw(myImage); 
  myImage = null;


  // encode the finished image so we can send the data to the server
  var encoder:JPEGEncoder = new JPEGEncoder();
  var data:ByteArray = encoder.encode(finished);
  var b64:Base64Encoder = new Base64Encoder()
  b64.encodeBytes( data )
return b64.toString();
}

看看这个,它会解释你所需要的一切

我喜欢使用AMFPHP来处理这种情况。查看Josh Strokes主页的远程处理部分。只需将ByteArray嵌套到另一个数组中,该数组包含识别它所需的任何其他数据,或者只需自行发送。通过这种方式,您可以对其进行解码并将其保存到文件夹中,也可以将ByteArray填充到数据库中供以后使用。如上所述,您必须确保首先对ByteArray进行编码。

我喜欢使用AMFPHP来处理此类情况。查看Josh Strokes主页的远程处理部分。只需将ByteArray嵌套到另一个数组中,该数组包含识别它所需的任何其他数据,或者只需自行发送。通过这种方式,您可以对其进行解码并将其保存到文件夹中,也可以将ByteArray填充到数据库中供以后使用。如上所述,您必须确保首先对ByteArray进行编码。

如果我不清楚,非常抱歉,但所有这些都非常有用。我似乎已经解决了这个问题,当我将字节数组发送到php脚本时,我不想让它导航到新页面,因为这是我的代码的性质。var jpgSource:BitmapData=new BitmapData(stage.stageWidth,stage.stageHeight);jpgSource.draw(阶段);var-jpgEncoder:jpgEncoder=newjpgencoder(85);var jpgStream:ByteArray=jpgEncoder.encode(jpgSource);var header:URLRequestHeader=新的URLRequestHeader(“内容类型”、“应用程序/八位字节流”);var jpgURLRequest:URLRequest=newurlrequest(“jpg_encoder_download.php?name=sketch.jpg”);jpgURLRequest.requestHeaders.push(header);jpgURLRequest.method=URLRequestMethod.POST;jpgURLRequest.data=jpgStream;导航URL(jpgURLRequest);试着编辑你的原始文章,把代码放在那里,这样它是可读的。我在文章末尾添加了一个链接,可以帮助你。很抱歉,如果我含糊不清,但所有这些都非常有用。我似乎已经解决了这个问题,当我将字节数组发送到php脚本时,我不想让它导航到新页面,因为这是我的代码的性质。var jpgSource:BitmapData=new BitmapData(stage.stageWidth,stage.stageHeight);jpgSource.draw(阶段);var-jpgEncoder:jpgEncoder=newjpgencoder(85);var jpgStream:ByteArray=jpgEncoder.encode(jpgSource);var header:URLRequestHeader=新的URLRequestHeader(“内容类型”、“应用程序/八位字节流”);var jpgURLRequest:URLRequest=newurlrequest(“jpg_encoder_download.php?name=sketch.jpg”);jpgURLRequest.requestHeaders.push(header);jpgURLRequest.method=URLRequestMethod.POST;jpgURLRequest.data=jpgStream;导航URL(jpgURLRequest);试着编辑你的原始文章,并把这段代码放在那里,这样它是可读的。我在文章末尾添加了一个链接,可以帮助你