Сохранение изображения из-под маски из спрайта - PullRequest
1 голос
/ 31 мая 2011

У меня есть объект-спрайт, в который загружается пользовательская фигура, которая используется в качестве маски для вырезания пользовательской фигуры из изображения, загружаемого с помощью объекта загрузчика - Загрузчик (loada) и объекты shape (линии) оба являются потомками объекта sprite - я добавил код, чтобы сохранить изображение из-под маски, но когда вызывается функция save, ничего не сохраняется и никаких ошибок не выдается.

function save(evt:MouseEvent):void{
    //Create random number from current date/time to name image created
    var imgID:Number= new Date().getTime()
    //Matrix to holder the area to be cropped
    var maskRect = loada.mask.getBounds(lines);
    //Matrix of image to be cropped
    var imgMatrix= loada.mask.transform.matrix;
    //Cropped image
    var myCroppedImage:Bitmap = cropImage(maskRect, imgMatrix, loada.mask.width, loada.mask.height, loada.mask );
    //Get new matrix of cropped image
    var m:Matrix = myCroppedImage.transform.matrix;
    var urlLoader:URLLoader = new URLLoader();
    //Set jpg quality of the image to be export 1-100
    var myEncoder:JPGEncoder = new JPGEncoder(80);
    //Create jpg to be exported
    var jpgSource:BitmapData = new BitmapData (loada.mask.width, loada.mask.height);
    jpgSource.draw(myCroppedImage, m);
    //Create byte array to hold jpg data
    var byteArray:ByteArray = myEncoder.encode(jpgSource);
    var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
    trace(imgID);
    //Send image to the server to be saved
    var saveJPG:URLRequest = new URLRequest("save_image.php?r="+imgID);
    saveJPG.requestHeaders.push(header);
    saveJPG.method = URLRequestMethod.POST;
    saveJPG.data = byteArray; 
    trace(saveJPG);
}

//Crop image
function cropImage( rect, matrix, _width:Number, _height:Number, displayObject:DisplayObject):Bitmap {
    //Create cropped image
    var croppedBitmap:Bitmap = new Bitmap( new BitmapData( _width, _height ), PixelSnapping.ALWAYS, true );
    croppedBitmap.bitmapData.draw(displayObject, matrix , null, null, rect, true );
    return croppedBitmap;
}

1 Ответ

0 голосов
/ 31 мая 2011

Из того, что вы написали здесь, похоже, что вы не вызываете функцию "загрузки":

urlLoader.load(saveJPG);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...