2009-05-25 8 views
6

पैनल पृष्ठभूमि छवि के लिए bytearray मान असाइन कैसे करें। अगर किसी के पास विचार या प्रयोग है तो कृपया मुझे समस्या से निपटने में मदद करें। ब्रीफ एक्सपी:bytearray से छवि या छवि को bytearray में कैसे परिवर्तित करें?

मेरे पास पैनल नियंत्रण है और पृष्ठभूमि सेवा के रूप में webservice से प्राप्त छवि लोड करना चाहता हूं। इसलिए मैंने सेटस्टाइल() का उपयोग किया लेकिन यह उस छवि को स्वीकार नहीं कर रहा था। तो उस छवि को मेरी पैनल पृष्ठभूमि छवि में कैसे जोड़ना है। Plz मुझे अपने विचार यहां बताएं।

+0

अधिक जानकारी उपयोगी होगी। –

उत्तर

2

एएस 3 के लिए आप एडोब कोरलिब का उपयोग कर सकते हैं। इस ट्यूटोरियल ... http://ntt.cc/2009/01/09/as3corelib-tutorialhow-to-use-jpegencoder-and-pngencoder-class-in-flex.html

+0

लिंक टूटा हुआ है –

+0

बस लिंक को इसी तरह के ट्यूटोरियल में बदल दिया है, लेकिन एक एलेक्स रियोस की तरह बाहरी लाइब्रेरी का उपयोग न करने पर अन्य उत्तरों की जांच करें। – ozke

4

uhm की जाँच करें, अच्छी तरह से मैं अनुमान है, क्योंकि यह एक छवि है, आप इसे एक BitmapData में है, चलो कहते हैं कि "myBmp" चलो ... तो से सभी डेटा को निकालने के लिए निम्न का उपयोग BitmapData:

var bytes:ByteArray = myBmp.getPixels(myBmp.rect); 

और निम्नलिखित लिखने के लिए:

myBmp.setPixels(myBmp.rect, bytes); 

ध्यान दें कि केवल कच्चे 32 बिट पिक्सेल डेटा bytearray में संग्रहीत है, संपीड़न के बिना, और न ही मूल छवि के आयाम।

संपीड़न के लिए, आप, corelib का संदर्भ लेना चाहिए के रूप में ozke ने कहा ...

1

एडोब के JPGEncoder (com.adobe.images.JPGEncoder) वर्ग का उपयोग करना और bytearray काफी आप सभी की जरूरत है। बाइट सरणी के लिए छवि परिवर्तित (यह मानते हुए कैप्स चर आप में भरने की जरूरत है चाहते हैं):

// -- first draw (copy) the image's bitmap data 
var image:DisplayObject = YOUR_IMAGE; 
var src:BitmapData = new BitmapData(image.width, image.height); 
src.draw(image); 

// -- encode the jpg 
var quality:int = 75; 
var jpg:JPGEncoder = new JPGEncoder(quality); 
var byteArray:ByteArray = jpg.encode(src); 
1

मैं एक सरणी में एक छवि लोड करने के लिए एक flash.display.Loader() का इस्तेमाल किया। इसमें एक पूर्ण घटना है जिसे छवि लोड होने के बाद निकाल दिया गया है। मैं फिर छवि को एक बिटमैप पर खींचता हूं जिसे मैंने एक छवि के डेटा पर सेट किया है जिसे पैनल में रखा जा सकता है। आशा है कि आप इस शुभकामना के बाद से बना सकते हैं।

public static function updateImage(img:Image, matrix:Matrix, 
            pageDTO:PageDTO, bitmapData:BitmapData):void { 
    var loader:flash.display.Loader = new flash.display.Loader(); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function (e:Event) : void { 
     bitmapData.draw(loader.content, matrix); 
     pageViewer.data = new Bitmap(bitmapData); 
    }); 
    loader.loadBytes(pageDTO.thumbnail); 
} 

<mx:Panel> 
    <mx:Image id="pageViewer"/> 
</mx:Panel> 
0

मुझे एक ही समस्या थी। एक कामकाज के रूप में मैंने एक मुख्य कैनवास के अंदर घोंसले उप कैनवास बनाया और उप कैनवास के पीछे मुख्य कैनवास में एक छवि जोड़ा। उप कैनवास पर खींची गई कुछ भी छवि के शीर्ष पर दिखाई देगी।

0

बस लोडबाइट फ़ंक्शन का उपयोग करके लोडर इंस्टेंस में लोड करें।

var ldr:Loader = new Loader(); 
ldr.loadBytes(myByteArray); 
addChild(ldr); 
12

फ्लेक्स 3 में या उच्चतर, तो आप सिर्फ क्या करने की जरूरत:

yourImage.source = yourByteArray; 

संबंध है!

+0

+1 अरे। यह असली साफ दिखता है। मुझे यह क्यों कहा गया था कि, 'बाइटएरे' को किसी छवि के स्रोत के रूप में उपयोग करने के लिए, मुझे 'img.load (myByteArray)' जैसे कुछ लिखना पड़ा था? क्या यह अर्थसार्थक भी है? –

+0

प्रश्न पृष्ठभूमि छवि शैली के बारे में हैं, यह setStyle ('backgroundImage', ...) के साथ काम नहीं करता है –