相关疑难解决方法(0)

裁剪UIImage

我有一些调整图像大小的代码,所以我可以获得图像中心的缩放块 - 我使用它来获取UIImage并返回图像的小方形表示,类似于在专辑视图中看到的照片应用程序.(我知道我可以使用a UIImageView并调整裁剪模式以获得相同的结果,但这些图像有时会显示在中UIWebViews).

我已经开始注意到这段代码中的一些崩溃,我有点难过.我有两种不同的理论,我想知道是否有基础.

理论1)我通过绘制到目标大小的屏幕外图像上下文来实现裁剪.由于我想要图像的中心部分,我设置CGRect传递给的参数drawInRect大于我的图像上下文边界的东西.我希望这是犹太洁食,但我是否试图汲取我不应该触及的其他记忆?

理论2)我在后台线程中做了所有这些.我知道UIKit的部分内容仅限于主线程.我假设/希望绘制到屏幕外的视图不是其中之一.我错了吗?

(哦,我多么想念NSImage's drawInRect:fromRect:operation:fraction:方法.)

cocoa-touch image-manipulation objective-c uiimagepickercontroller ios

206
推荐指数
11
解决办法
17万
查看次数

在iPhone中裁剪图像的透明度

我正在研究Jigsaw类型的游戏,我有两个用于屏蔽的图像,我已经实现了这个代码用于屏蔽

- (UIImage*) maskImage:(UIImage *)image withMaskImage:(UIImage*)maskImage {

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGImageRef maskImageRef = [maskImage CGImage];

    CGContextRef mainViewContentContext = CGBitmapContextCreate (NULL, maskImage.size.width, maskImage.size.height, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast);

    if (mainViewContentContext==NULL)
        return NULL;

    CGFloat ratio = 0;
    ratio = maskImage.size.width/ image.size.width;
    if(ratio * image.size.height < maskImage.size.height) {
        ratio = maskImage.size.height/ image.size.height;
    } 

    CGRect rect1 = {{0, 0}, {maskImage.size.width, maskImage.size.height}};
    CGRect rect2  = {{-((image.size.width*ratio)-maskImage.size.width)/2,-((image.size.height*ratio)-maskImage.size.height)/2},{image.size.width*ratio, image.size.height*ratio}};

    CGContextClipToMask(mainViewContentContext, rect1, maskImageRef);
    CGContextDrawImage(mainViewContentContext, rect2, image.CGImage);

    CGImageRef newImage = CGBitmapContextCreateImage(mainViewContentContext);
    CGContextRelease(mainViewContentContext);

    UIImage *theImage = [UIImage imageWithCGImage:newImage];
    CGImageRelease(newImage);
    return …
Run Code Online (Sandbox Code Playgroud)

iphone transparency uiimage

22
推荐指数
1
解决办法
4759
查看次数

iOS中的自定义图像蒙版

我有掩盖图像的问题.我做游戏"拼图",并且必须制作自定义图像.我发现并尝试了两种自定义裁剪方式:

  1. 使用CALayer.mask财产.
  2. 使用UIImage.mask财产.

在第一个选项中,我创建自定义路径,然后将其分配给CAShapeLayer.path属性,然后分配CAShapeLayerCALayer.mask属性.最后我有自定义裁剪图像.在第二个选项中我首先使用CGImageMaskCreate()方法(我使用之前创建的拼图的黑色蒙版图像),然后CGContextClipToMask().在任何一个选项中我都有性能问题(主要是当我将图像裁剪成16个谜题并在屏幕上拖动时).

是否有任何其他方法以自定义方式裁剪图像.(我不知道如何解决性能问题).提前致谢.

iphone puzzle calayer cashapelayer ios

5
推荐指数
1
解决办法
2万
查看次数