合并两个图像在windows通用8.1

本文关键字:windows 通用 图像 两个 合并 | 更新日期: 2023-09-27 18:13:01

我有1.png (150x150大小)和2.png (150x150大小)。我使用以下代码创建一个stackpanel (310x150大小):

StackPanel mygrid = new StackPanel();
        mygrid.Orientation = Orientation.Horizontal;
        Image myimage1 = new Image();
        myimage1.Width = 150; myimage1.Height = 150;
        myimage1.Source = new BitmapImage(new Uri(@"ms-appx:///assets/1.png", UriKind.RelativeOrAbsolute));
        Image myimage2 = new Image();
        myimage2.Width = 150; myimage2.Height = 150;
        myimage2.Source = new BitmapImage(new Uri(@"ms-appx:///assets/2.png", UriKind.RelativeOrAbsolute));
        mygrid.Children.Add(myimage1);
        mygrid.Children.Add(myimage2);

然后我将这个stackpanel转换为Image:

RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
        await renderTargetBitmap.RenderAsync(mygrid, 310, 150);

我想保存这张图片在"ms-appx:///assets/3.png"(像这个名字),并使用它。通过这种方式,我将两个图像合并为一个图像,但我不能将它们保存为3.png。我该怎么做呢?
如果这不是把两张图片合并成一张图片的好方法,有没有可能帮助我?

更新:我很抱歉,但问题有问题,它被删除。我不能删掉,因为上面有答案。谢谢你的帮助。

合并两个图像在windows通用8.1

我认为你通常使用错误的方法来做这件事。我会将这两张图像加载到WriteableBitmap s中,然后将它们与WriteableBitmapEx库混合

话虽如此,以下是如何将WriteableBitmap保存为png的方法,从这里开始:

    // Save the writeableBitmap object to JPG Image file 
    IStorageFile saveFile = todo;// insert your code for opening the file here
    IRandomAccessStream stream = await savefile.OpenAsync(FileAccessMode.ReadWrite);
    BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
    // Get pixels of the WriteableBitmap object 
    Stream pixelStream = renderTargetBitmap.PixelBuffer.AsStream();
    byte[] pixels = new byte[pixelStream.Length];
    await pixelStream.ReadAsync(pixels, 0, pixels.Length);
    // Save the image file with jpg extension 
    encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)writeableBitmap.PixelWidth, (uint)writeableBitmap.PixelHeight, 96.0, 96.0, pixels);
    await encoder.FlushAsync(); 

您尝试将图像保存为ms-appx:///assets/3.png,这将不起作用,因为您无法将图像保存在应用程序包中。

你需要把它保存到你的应用程序有写权限的地方