使用MonoTouch中的CIImage.ImageByCroppingToRect或CICrop裁剪图像

时间:2012-04-28 06:25:20

标签: iphone xamarin.ios crop

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

此线程中有一个ObjC示例: Cropping CIImage with CICrop isn't working properly

但我还没有设法将其转换为C#并使其正常工作。

1 个答案:

答案 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;