我已经改变了这个问题,因为我现在相信更多的背景会有意义
我正在尝试使用已有图像中的另一个dpi创建一个新位图。
然而,当我试图创建像这样的字节数组时,我在大图像上得到一个OutOfMemoryException
Private Function ConvertBitmapToXDPI(bitmapImage As BitmapImage, newDpi As Integer) As BitmapSource
Dim width As Integer = bitmapImage.PixelWidth
Dim height As Integer = bitmapImage.PixelHeight 'value is => 3456
Dim stride As Integer = width * bitmapImage.Format.BitsPerPixel 'value is => 110592
Dim pixelData As Byte() = New Byte(stride * height - 1) {} ' <- EXCEPTION!
bitmapImage.CopyPixels(pixelData, stride, 0)
Return BitmapSource.Create(width, height, newDpi, newDpi, bitmapImage.Format, Nothing, pixelData, stride)
End Function
该方法用作转换器以更改图像的DPI。但是它会在标记的行上抛出OutOfMemoryException。
我的问题是,是否有另一种方法可以做我想做的事情?以上情况适用于较小的图像,但只要图像尺寸较大,就会发生这种情况