gpt4 book ai didi

c# - 在不复制的情况下裁剪图像

转载 作者:太空狗 更新时间:2023-10-29 23:24:11 27 4
gpt4 key购买 nike

我正在编写一个应用程序,需要将大图像拆分成小图 block ,其中每个图 block 本质上是原始图像的裁剪版本。

目前我的拆分操作看起来像这样

tile.Image = new BitmapImage();
tile.Image.BeginInit();
tile.Image.UriSource = OriginalImage.UriSource;
tile.Image.SourceRect = new Int32Rect(x * tileWidth + x, y * tileHeight, tileWidth, tileHeight);
tile.Image.EndInit();

凭直觉,我认为这基本上会创建对原始图像的“引用”,并且只会显示为图像的子矩形。然而,我的拆分操作执行的速度很慢,这让我相信这实际上是在复制原始图像的源矩形,这对于大图像来说非常慢(拆分像样的图像时有明显的 3-4 秒停顿图片大小)。

我环顾四周,但没能找到一种方法来绘制位图作为大图像的子矩形,而不复制任何数据。有什么建议吗?

最佳答案

使用 System.Windows.Media.Imaging.CroppedBitmap 类:

// Create a CroppedBitmap from the original image.
Int32Rect rect = new Int32Rect(x * tileWidth + x, y * tileHeight, tileWidth, tileHeight);
CroppedBitmap croppedBitmap = new CroppedBitmap(originalImage, rect);

// Create an Image element.
Image tileImage = new Image();
tileImage.Width = tileWidth;
tileImage.Height = tileHeight;
tileImage.Source = croppedBitmap;

关于c# - 在不复制的情况下裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15648378/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com