保存图像时出错

时间:2014-06-02 14:22:27

标签: image actionscript-3 image-processing jpeg filereference

我试图在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);

2 个答案:

答案 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。)如果是文件流或字节数组,那就是我希望看到扭曲图像的麻烦。

实际上图像的一部分缺失了,还是整个图像?