iPhone - 如何制作可调整大小的矩形来裁剪图像?

标签 iphone iphone-sdk-3.0 crop iphone-sdk-3.1

我在制作可调整大小的矩形来裁剪图像时遇到问题。我正在尝试实现如下图所示的效果:

http://img192.imageshack.us/img192/8930/customcropbox.jpg

嗯,唯一的问题是我不知道从哪里开始。我需要一些关于如何实现这种裁剪效果的建议。我应该阅读哪些文档?核心显卡还是 Quartz 2d?两个都?自从 iPhone 发布以来,我一直在为它编写代码,但我从未真正使用过核心显卡等。任何帮助或建议将不胜感激。随着我的进展,我将把我的代码放在这里,以展示当我实现它时它是如何完成的。 :-) 另外,这个矩形框可以在 UIImageView 中跨屏幕移动,这使它更有趣。感谢您的帮助,我期待实现这一目标。

最佳答案

添加我的书签question这是完全一样的。

我已经在裁剪 View 中移动并使其正确显示图像的部分,但处理 ScrollView 缩放是一项正在进行的工作。目前,我有一个 ImageView 和普通 UIView 分层在 UIScrollview 中,然后在 ScrollView 之外和更高级别是我的自定义裁剪 UIView。我实现了 Touches 方法来处理拖动它的问题,还实现了 DrawRect:

- (void)drawRect:(CGRect)rect {
    // Drawing code
    if( self.image == nil )
        return;

    CGPoint offset = scrollView.contentOffset;
    clipRect = CGRectOffset(self.frame, offset.x, offset.y);

    UIImage *croppedImage = [image croppedImage:clipRect];
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [croppedImage drawAtPoint:CGPointMake(0, 0)];
}

注意:我的裁剪 View 不是 UIImageView 的后代,它只是 UIView 引用其他 View 中的底层图像。

“croppedImage”是 UIImage 上的一个类别,非常简单:

@implementation UIImage (Resize)
- (UIImage *)croppedImage:(CGRect)bounds {
    CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], bounds);
    UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    return croppedImage;
}
...
@end

我已经实现了一些 UIScrollViewDelegate 方法并传递滚动事件,以便我可以保持裁剪 View 同步。缩放也被传递,但正如前面提到的,尚未按预期工作。

另一个注意事项:我认为没有必要每次都浪费时间生成带有裁剪区域的新 UIImage,因为使用

应该可以做到这一点
CGImageRef imageRef = CGImageCreateWithImageInRect([yourImage CGImage], bounds);
and 
CGContextDrawImage(ctx, clipRect, imageRef);

关于iPhone - 如何制作可调整大小的矩形来裁剪图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1971542/

相关文章:

iOS 未经授权允许不同的屏幕方向

iphone - iOS OpenGL ES 2.0 : Offscreen render and save the result to an UIImage

iphone - 推送通知适用于 Ad Hoc,但不适用于从 Apple 商店下载的情况

iphone - iphone sdk 4.0 中按钮尺寸变小

iphone - 任何更改 UIScrollView 的 zoomToRect 持续时间的方法?

c# - 在客户端裁剪图像并上传裁剪后的图像

php - 上传并调整 Png 大小会生成黑色背景图像

iphone - iOS 4.2 相机和相册问题

ios - iPhone XS 最大 | swift 4.2 |应用程序崩溃 libsystem_kernel.dylib abort_with_payload_wrapper_internal + 104

kotlin - 如何在CameraX上的相机预览中裁剪图像矩形