खोज…


पैरामीटर

पैरामीटर विवरण
DecodePixelWidth निर्दिष्ट चौड़ाई के साथ BitmapImage लोड करेगा। स्क्रीन पर छोटे प्रदर्शित होने वाली बड़ी छवियों को लोड करते समय मेमोरी उपयोग और गति के साथ मदद करता है। यह पूर्ण छवि लोड करने से अधिक कुशल है और आकार परिवर्तन करने के लिए Image नियंत्रण पर निर्भर है।
DecodePixelHeight DecodePixelHeight समान। यदि केवल एक पैरामीटर निर्दिष्ट किया गया है तो सिस्टम आवश्यक आकार में लोड करते समय छवि के पहलू अनुपात को बनाए रखेगा।

छवि नियंत्रण के साथ BitmapImage का उपयोग करना

<Image x:Name="MyImage" />
// Show image from web
MyImage.Source = new BitmapImage(new Uri("http://your-image-url.com"))

// Show image from solution
MyImage.Source = new Uri("ms-appx:///your-image-in-solution", UriKind.Absolute)

// Show image from file
IRandomAccessStreamReference file = GetFile();
IRandomAccessStream fileStream = await file.OpenAsync();
var image = new BitmapImage();
await image.SetSourceAsync(fileStream);
MyImage.Source = image;
fileStream.Dispose(); // Don't forget to close the stream

RenderTargetBitmap के साथ छवि के लिए रेंडरिंग नियंत्रण

<TextBlock x:Name="MyControl"
           Text="Hello, world!" />
var rtb = new RenderTargetBitmap();
await rtb.RenderAsync(MyControl); // Render control to RenderTargetBitmap

// Get pixels from RTB
IBuffer pixelBuffer = await rtb.GetPixelsAsync();
byte[] pixels = pixelBuffer.ToArray();

// Support custom DPI
DisplayInformation displayInformation = DisplayInformation.GetForCurrentView();

var stream = new InMemoryRandomAccessStream();
BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, // RGB with alpha
                     BitmapAlphaMode.Premultiplied,
                     (uint)rtb.PixelWidth,
                     (uint)rtb.PixelHeight,
                     displayInformation.RawDpiX,
                     displayInformation.RawDpiY,
                     pixels);

await encoder.FlushAsync(); // Write data to the stream
stream.Seek(0); // Set cursor to the beginning

// Use stream (e.g. save to file)

परिवर्तित बिटमैप (जैसे क्लिपबोर्ड सामग्री से) पीएनजी के लिए

IRandomAccessStreamReference bitmap = GetBitmap();
IRandomAccessStreamWithContentType stream = await bitmap.OpenReadAsync();
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
var pixels = await decoder.GetPixelDataAsync();
var outStream = new InMemoryRandomAccessStream();

// Create encoder for PNG
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, outStream);

// Get pixel data from decoder and set them for encoder
encoder.SetPixelData(decoder.BitmapPixelFormat,
                     BitmapAlphaMode.Ignore, // Alpha is not used
                     decoder.OrientedPixelWidth,
                     decoder.OrientedPixelHeight,
                     decoder.DpiX, decoder.DpiY,
                     pixels.DetachPixelData());

await encoder.FlushAsync(); // Write data to the stream

// Here you can use your stream

छवि को XAML में लोड करें

<Image Source="ms-appx:///Assets/Windows_10_Hero.png"/>

आपकी छवि एसेट्स फ़ोल्डर में एप्लिकेशन का हिस्सा है, और Content के रूप में चिह्नित है

<Image Source="ms-appdata:///local/Windows_10_Hero.png"/>

आपकी छवि आपके एप्लिकेशन के स्थानीय फ़ोल्डर में सहेजी गई थी

<Image Source="ms-appdata:///roaming/Windows_10_Hero.png"/>

आपकी छवि आपके एप्लिकेशन के रोमिंग फ़ोल्डर में सहेजी गई थी

कोड में आस्तियों से छवि लोड करें

 ImageSource result = new BitmapImage(new Uri("ms-appx:///Assets/Windows_10_Hero.png"));

एक Binding या कोड-पीछे यद्यपि Image नियंत्रण के Source गुण सेट करने के लिए परिणाम का उपयोग करें

StorageFile से लोड छवि

public static async Task<ImageSource> FromStorageFile(StorageFile sf)
{
    using (var randomAccessStream = await sf.OpenAsync(FileAccessMode.Read))
    {
        var result = new BitmapImage();
        await result.SetSourceAsync(randomAccessStream);
        return result;
    }
}

एक Binding या कोड-पीछे यद्यपि Image नियंत्रण के Source गुण सेट करने के लिए परिणाम का उपयोग करें

उपयोगी जब आपको उन छवियों को खोलने की आवश्यकता होती है जो उपयोगकर्ता की डिस्क पर संग्रहीत होती हैं और आपके एप्लिकेशन के साथ शिप नहीं की जाती हैं

छवि को UI तत्व प्रदान करना

public static async Task<WriteableBitmap> RenderUIElement(UIElement element)
{
    var bitmap = new RenderTargetBitmap();
    await bitmap.RenderAsync(element);   
    var pixelBuffer = await bitmap.GetPixelsAsync();
    var pixels = pixelBuffer.ToArray();
    var writeableBitmap = new WriteableBitmap(bitmap.PixelWidth, bitmap.PixelHeight);
    using (Stream stream = writeableBitmap.PixelBuffer.AsStream())
    {
        await stream.WriteAsync(pixels, 0, pixels.Length);
    }
    return writeableBitmap;
}

चूंकि WriteableBitmap एक ImageSource आप इसका उपयोग किसी छवि नियंत्रण के स्रोत गुण को सेट करने के लिए कर सकते हैं, हालांकि बाइंडिंग या कोड-पीछे

एक स्ट्रीम करने के लिए एक WriteableBitmap सहेजें

public static async Task<IRandomAccessStream> ConvertWriteableBitmapToRandomAccessStream(WriteableBitmap writeableBitmap)
{
    var stream = new InMemoryRandomAccessStream();

    BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream);
    Stream pixelStream = writeableBitmap.PixelBuffer.AsStream();
    byte[] pixels = new byte[pixelStream.Length];
    await pixelStream.ReadAsync(pixels, 0, pixels.Length);

    encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)writeableBitmap.PixelWidth, (uint)writeableBitmap.PixelHeight, 96.0, 96.0, pixels);
    await encoder.FlushAsync();

    return stream;
}

बिटमैप को फ़ाइल में सहेजने के लिए स्ट्रीम का उपयोग करें।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow