Ios 基于quartz2d的图像处理

Ios 基于quartz2d的图像处理,ios,Ios,我想给出图像和绘制图像的矩形边框之间的间距,比如左侧5个,顶部5个,右侧5个,但底部约30个,因为这是用户将要写入的文本的空间,用户还可以选择他/她希望文本位于顶部,所以在这种情况下,顶部间距将为30,底部间距将为5。以下是它位于drawrect方法中uiview子类中的代码 使用此代码将边框和图像紧密绑定在一起,我无法给出边框和图像之间的间隙。知道我该怎么做吗 提前谢谢 首先,您有一个严重的bug。这一行是错误的: CGSize cgs = CGSizeMake(250.0, 300.0);

我想给出图像和绘制图像的矩形边框之间的间距,比如左侧5个,顶部5个,右侧5个,但底部约30个,因为这是用户将要写入的文本的空间,用户还可以选择他/她希望文本位于顶部,所以在这种情况下,顶部间距将为30,底部间距将为5。以下是它位于drawrect方法中uiview子类中的代码

使用此代码将边框和图像紧密绑定在一起,我无法给出边框和图像之间的间隙。知道我该怎么做吗

提前谢谢


首先,您有一个严重的bug。这一行是错误的:

CGSize cgs = CGSizeMake(250.0, 300.0);
    UIGraphicsBeginImageContext(cgs);    
    CGRect rectangle = CGRectMake(0,0,cgs.width,cgs.height);
    UIImage *myImage = [UIImage imageNamed:@"BMW.jpg"]; 

    [myImage drawInRect:rectangle];    
    [myImage release];

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 5.0);
    CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0); 
    CGContextStrokeRect(context, rectangle);

    UIImage *testImg =  UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    [testImg drawAtPoint:CGPointMake(35, 10)];
你没有自己的
myImage
,所以你应该不要发布它。您需要阅读中的“内存管理规则”。或者,您应该启用ARC(自动引用计数),然后编译器将负责为您发布内容。由于自iOS 4.0开始支持ARC,如果您正在开发一个新的应用程序,您几乎肯定会使用它

关于图像绘制,您只需要修改正在绘制图像的矩形。例如,可以在顶部、左侧和右侧保留5像素边框,在底部保留30点边框,如下所示:

[myImage release];

如果您想在顶部添加30点边框,还需要修改
imageRect.origin.y

非常感谢您的重播并指出错误。。。我修改了代码和它的工作,但图像正在走出边界,并蔓延到左上右下的差距请检查我附加它的屏幕截图。我要的是边框内的间隙,而不是边框外的间隙。我说你应该修改用于绘制图像的矩形。我没有说你应该修改你用来画边框的矩形。为什么您认为我创建了一个名为
imageRect
的新变量?我在
drawInRect:
中使用了错误的变量。我已经修好了。
CGRect imageRect = CGRectInset(rectangle, 5, 5);  // move 5 points in on all sides
imageRect.size.height -= 25;  // make it another 25 points shorter
[myImage drawInRect:imageRect];