2012-03-25 9 views
0

Ich möchte viele Bilder als BitmapData im Speicher behalten. Die Bilder sind monochromatisch, also brauche ich keine RGB- oder RGBA-Werte. Gibt es eine Möglichkeit, das interne Format eines BitmapData monochromatische oder eine andere Möglichkeit, Bilder als BitmapData anzeigen anzuzeigen?AS3 einfarbige Bilder

Antwort

2

Nein, es gibt kein monochromatisches Format für BitmapData.

Nein, Sie können Bilder in nichts anderes anzeigen BitmapData (ok, Shadern und so, aber es ist wirklich nicht das Gleiche).

Sie könnten jedoch ByteArray verwenden, um die nicht aktuell verwendeten Daten zu speichern, um später einige BitmapData zu verwenden, und setPixel, um Pixel durch Aufteilen des einzelnen Kanalwerts in 3 Werte festzulegen.

1

Wenn Sie bis zu 4 Bilder mit der gleichen Größe haben, können Sie ein einzelnes BitmapData Objekt verwenden, um alle auf verschiedenen Kanälen zu speichern, und ColorMatrixFilter verwenden, um nur den gewünschten Kanal anzuzeigen.

Dies wäre schneller (und wahrscheinlich weniger Code) als wvxvw Vorschlag der Speicherung der Daten in einem ByteArray und mit setPixel.

// store data in the red channel 
bitmap.bitmapData.copyChannel(im1.bitmapData, im1.bitmapData.rect, new Point(), BitmapDataChannel.RED, BitmapDataChannel.RED); 
// store data in the green channel 
bitmap.bitmapData.copyChannel(im2.bitmapData, im2.bitmapData.rect, new Point(), BitmapDataChannel.GREEN, BitmapDataChannel.GREEN); 

// e.g. filter the bitmap to just show the green channel 
// (1's in first col for red, 3rd col for blue, 4th for alpha 
var greenChannelFilter:ColorMatrixFilter = new ColorMatrixFilter( 
      [ 0,1,0,0,0, 
       0,1,0,0,0, 
       0,1,0,0,0, 
       0,0,0,0,255 ]); 
bitmap.filters = [greenChannelFilter];