2012-09-20 4 views
0

배경 이미지가 더 작습니다. 다음과 같이 copypixels를 사용하여 더 작은 이미지를 더 큰 이미지로 복사합니다.pixelbender를 사용하여 이미지 회전

destBitMap.copyPixels(img, new Rectangle(0, 0, img.width, img.height), 
    location); 

이제 복사하기 전에 이미지를 회전하고 싶습니다. 무엇을하는 가장 좋은 방법은? Matrix 및 bitmapData.draw()를 사용해 보았지만 받아 들일 수 없습니다. 픽셀 화 된 가장자리가 있습니다.

이 픽셀 벤더 필터를 찾았습니다. 이미지를 회전 시키려면 http://life.neophi.com/danielr/2009/07/image_rotation_with_pixel_bend.html 입니다. 더하기 측면에서, 그것은 정말 빠릅니다. 필자는 pixelbender를 사용하지 않았기 때문에 필자는이 필터를 사용하여 비트 맵 이미지에 적용하고 회전 된 이미지를 배경 이미지에 복사 할 수 있는지 궁금합니다.

이것은 필자가 (이 나던 작업) 뭘하려 : 무슨 다음

shader = new Shader(new RotateFilter() as ByteArray); 
    shader.data.origin.value = [resizedImage.width/2, resizedImage.width/2]; 
    shader.data.rotation.value = [rotation]; 
    filter = new ShaderFilter(shader); 

    var bm:BitmapImage = new BitmapImage(); 
    bm.source = resizedImage; 
    bm.filters = [filter]; 

를? 이것이 가능합니까?

답변

1

단일 필터를 비트 맵에 적용하려면 BitmapData.applyFilter() 메서드를 사용하십시오. 당연히 결과 비트 맵으로 무엇이든 할 수 있습니다. 그러나 UIComponent가 허용하는 것보다 낮은 레벨에서이 모든 것을 적용해야합니다. 당신의 resizedImage 유형의 비트 맵 인 경우, 당신은이 작업을 수행 :

resizedImage.bitmapData.applyFilter(resizedImage.bitmapData,resizedImage.bitmapData.rect,new Point(),filter); 

이 후, resizedImage.bitmapData는 회전 된 비트 맵을 포함합니다.

+0

실제로 시도해 보았습니다. applyFilter가 BitmapFilter를 허용하는 동안 pixelbdender에는 ShaderFilter가 필요합니다. – StephenNYC

+0

음, ShaderFilter는 BitmapFilter의 하위 클래스이므로 여기에서 쉽게 사용할 수 있습니다. – Vesper