【发布时间】:2009-06-05 15:07:18
【问题描述】:
我将图像加载到 Flash 中并使用 JPGEncoder 将图像编码为 ByteArray 并将其发送到 AMF PHP,后者将 bytearray 写入文件。这一切似乎都可以正常工作,我可以在 Photoshop CS4 中下载生成的文件绝对没问题。当我尝试从桌面打开它或在 Flash 中打开它时,它不起作用... Picasa 我的默认图片浏览器显示“无效”
这是我用来将字节数组写入文件的代码 -
$jpg = $GLOBALS["HTTP_RAW_POST_DATA"];
file_put_contents($filename, $jpg);
就是这样...我使用NetConnection类连接和调用服务,我需要说我发送jpg数据吗?我认为 JPGEncoder 会解决这个问题。如何在写入文件之前验证字节数组?我是否需要设置 MIME 类型或其他东西.. 请原谅有点菜鸟的问题,一点知识可能是一件危险的事情。
谢谢
--------------------------------------- 第二部分 ------ ------------------------------------
这是一些代码 -
1) 将图片加载到 Flash 播放器中
item.load();
function _onImageDataLoaded(evt:Event):void {
var tmpFileRef:FileReference=FileReference(evt.target);
image_loader=new Loader ;
image_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _onImageLoaded);
image_loader.loadBytes(tmpFileRef.data);
}
function _onImageLoaded(evt:Event):void {
bitmap=Bitmap(evt.target.content);
bitmap.smoothing=true;
if (bitmap.width>MAX_WIDTH||bitmap.height>MAX_HEIGHT) {
resizeBitmap(bitmap);
}
uploadResizedImage(bitmap);
}
function resizeBitmap(target:Bitmap):void {
if (target.height>target.width) {
target.width=MAX_WIDTH;
target.scaleY=target.scaleX;
} else if (target.width >= target.height) {
target.height=MAX_HEIGHT;
target.scaleX=target.scaleY;
}
}
function uploadResizedImage(target:Bitmap):void {
var _bmd:BitmapData=new BitmapData(target.width,target.height);
_bmd.draw(target, new Matrix(target.scaleX, 0, 0, target.scaleY));
var encoded_jpg:JPGEncoder=new JPGEncoder(90);
var jpg_binary:ByteArray=encoded_jpg.encode(_bmd);
_uploadService=new NetConnection();
_uploadService.objectEncoding=ObjectEncoding.AMF3
_uploadService.connect("http://.../amfphp/gateway.php");
_uploadService.call("UploadService.receiveByteArray",new Responder(success, error), jpg_binary, currentImageFilename);
}
非常感谢您的帮助
【问题讨论】:
-
所以在AMF服务器上无效?你是如何使用 JPGEncoder 的?您可以为每个步骤显示一些代码吗?图片的来源是什么格式?您是在 Flash 中将其创建为 BitmapData 吗?我猜它很早就搞砸了,因为 ByteArray 只是字节,如果你只是将它们写入文件,那么不会出错。
-
嗨 - 我已经编辑了原始问题以包含一些代码。谢谢kekoav
标签: actionscript-3 encoding bytearray jpeg amfphp