0

我有一个非常大的图像,我想显示一个 200x200px 的缩略图(显示图像的一部分,而不是整个图像的拉伸版本)。为了实现这一点,我正在考虑使用 CIImage.ImageByCroppingToRect 或 CICrop - 但我无法获得任何有用的东西。结果要么只是黑色(我假设我看到的是裁剪图像的黑色部分),要么我得到一个 SIGABRT(“无法使用给定的 GLES 上下文处理 (6000 x 3000) 大小的纹理!”)

此线程中有一个 ObjC 示例: 使用 CICrop 裁剪 CIImage 无法正常工作

但我还没有设法将它翻译成 C# 并让它正常工作。

4

1 回答 1

3

这是您提到的帖子中答案的 MonoTouch 端口:

var croppedImaged = CIImage.FromCGImage (inputCGImage).ImageByCroppingToRect (new RectangleF (150, 150, 300, 300));              
var transformFilter = new CIAffineTransform();
var affineTransform = CGAffineTransform.MakeTranslation (-150, 150);
transformFilter.Transform = affineTransform;
transformFilter.Image = croppedImaged;           
CIImage transformedImage = transformFilter.OutputImage;
于 2012-04-29T01:29:17.353 回答