Извините, ребята, но я, наконец, придумал решение.
Спасибо, что так или иначе.
Первое, что я сделал, это преобразовать флэш-файл из ActionScript2 в ActionScript3, чтобы иметь возможность использовать as3corelib Mike Chambers https://github.com/mikechambers/as3corelib. Из этой библиотеки я использовал JGPEncoder, как показано ниже
import flash.external.ExternalInterface;
import flash.display.JPEGEncoderOptions;
import com.adobe.images.JPGEncoder;
import flash.display.BitmapData;
import flash.utils.ByteArray;
import flash.display.Bitmap;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;
function snapShot(){
var imgBM:Bitmap;
var myBitmapData:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);
myBitmapData.draw(stage);
imgBM=new Bitmap(myBitmapData);
addChild(imgBM);
var imgBA:ByteArray;
var jpgEncoder:JPGEncoder = new JPGEncoder(90);
//-------Send image to php
imgBA = jpgEncoder.encode(myBitmapData);
var sendHeader:URLRequestHeader = new URLRequestHeader('Content-type', 'application/octet-stream');
var sendReq:URLRequest = new URLRequest("parseimg.php");
sendReq.requestHeaders.push(sendHeader);
sendReq.method = URLRequestMethod.POST;
sendReq.data = imgBA;
var sendLoader:URLLoader = new URLLoader;
sendLoader.addEventListener(Event.COMPLETE, imageSentHandler);
sendLoader.load(sendReq);
}
var imagePath:String;
function imageSentHandler(event:Event):void {
var dataStr:String = event.currentTarget.data.toString();
var resultVars:URLVariables = new URLVariables();
resultVars.decode(dataStr);
imagePath = "http://" + resultVars.base + resultVars.filename;
}
Следующим шагом было создание PHP, который получает ByteArray и создает файл изображения на сервере.
<?php
if (isset ($GLOBALS["HTTP_RAW_POST_DATA"])) {
$filename = "your_image_name.jpg";
$fp = fopen($filename,"wb");
fwrite($fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ]);
fclose($fp);
echo "filename=".$filename."&base=".$_SERVER["HTTP_HOST"].dirname($_SERVER["PHP_SELF"]); } ?>
Наконец и с изображением уже в папке на сервере, я просто должен был скрыть встроенный флэш-объект с помощью CSS, и показать изображение вместо этого.
Я получил это с помощью JQuery на document.ready
var d = new Date();
setTimeout(function(){
$("#imgflash").attr("src", "your_image_name.jpg?"+d.getTime());
setTimeout("window.print();", 200);
},1000);
Как я довольно новый на ActionScript и Flash, любые улучшения в этом коде любезно принято.
Факс: Если да, то каков его URL-адрес? –
страница находится в режиме онлайн, но, к сожалению, это не общедоступный доступ. Мне очень жаль. – Gaijin