我试图在JPEG图像中保存MovieClip的内容,但是当我保存它时图像有这个问题:
其中有一个空白区域(显而易见的是引用格式),这出现在我尝试使用JPGEncoder的文件引用保存的所有图像中。
我认为问题可能因为JPGEncoder类而发生,但我不确定。
这是我用来保存图像的功能(一些字符串是葡萄牙语):
private function fl_Salvar(event:MouseEvent)
{
try
{
var src:BitmapData = new BitmapData(imageViewer.width,imageViewer.height);
var mtx:Matrix = DisplayUtils.fitIntoRect(imageViewer.mcImage.getChildAt(0),rect,true,Alignment.MIDDLE,false);
src.draw(imageViewer,mtx,null,null,null,true);
var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var imgStream:ByteArray = null;
imgStream = jpgEncoder.encode(src);
var file:FileReference = new FileReference();
file.addEventListener( IOErrorEvent.IO_ERROR, ioErrorHandler );
file.save( imgStream, "TESTE.jpg");
}
catch (ioe:IllegalOperationError)
{
trace("Operação Ilegal.");
}
catch (ae:ArgumentError)
{
trace("Argumento Inválido.");
}
catch (me:MemoryError)
{
trace("Memória Insuficiente.");
}
catch (error:Error)
{
trace("Erro ao tentar salvar imagem : "
+ " . Erro : " + error);
}
}
private function ioErrorHandler( event:IOErrorEvent ):void
{
trace("Handler de erro I/O: " + event);
}
我想知道是否有人知道可能导致这种情况的原因。 提前谢谢。
修改:
这是我的直接声明:
rect = new Rectangle(imageViewer.mcImage.x,imageViewer.mcImage.y,imageViewer.mcImage.width,imageViewer.mcImage.height);
答案 0 :(得分:1)
这是因为这两行:
var mtx:Matrix = DisplayUtils.fitIntoRect(imageViewer.mcImage.getChildAt(0),rect,true,Alignment.MIDDLE,false);
src.draw(imageViewer,mtx,null,null,null,true);
他们所做的是他们将你的形象放在某些rect
内。你没有提供信息什么是矩形以及它是如何定义的,但我想它有一些尺寸。因此,您正在拟合图像,并且它没有被拉伸,而是在较长的一侧调整大小。
编码器运行良好,您只需要检查要适合图像的矩形。
答案 1 :(得分:1)
你确定这不是你拍照软件吗?图像看起来很完整(它们从左上角到右下角逐个像素地写入byteArray。)如果是文件流或字节数组,那就是我希望看到扭曲图像的麻烦。
实际上图像的一部分缺失了,还是整个图像?