我有一个非常大的图像,我想要显示200x200px的缩略图(显示图像的一部分,而不是整个图像的拉伸版本)。为了实现这一点,我正在研究使用CIImage.ImageByCroppingToRect或CICrop - 但我无法获得任何有用的东西。要么结果只是黑色(我假设我看到的是裁剪图像的黑色部分)或者我得到一个SIGABRT(“无法使用给定的GLES上下文处理(6000 x 3000)大小的纹理!”)
此线程中有一个ObjC示例: Cropping CIImage with CICrop isn't working properly
但我还没有设法将其转换为C#并使其正常工作。
答案 0 :(得分: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;