我开发了简单的UIApplication,我想在CGContext的帮助下裁剪UIImage(.jpg格式).到目前为止开发的代码如下,
CGImageRef graphicOriginalImage = [originalImage.image CGImage];
UIGraphicsBeginImageContext(originalImage.image.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGBitmapContextCreateImage(graphicOriginalImage);
CGFloat fltW = originalImage.image.size.width;
CGFloat fltH = originalImage.image.size.height;
CGFloat X = round(fltW/4);
CGFloat Y =round(fltH/4);
CGFloat width = round(X + (fltW/2));
CGFloat height = round(Y + (fltH/2));
CGContextTranslateCTM(ctx, 0, image.size.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
CGRect rect = CGRectMake(X,Y ,width ,height);
CGContextDrawImage(ctx, rect, graphicOriginalImage);
croppedImage = UIGraphicsGetImageFromCurrentImageContext();
return croppedImage;
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,但它不能裁剪图像.原始图像存储器和裁剪图像存储器将相同(等于原始图像存储器).以上代码适合裁剪图像????????????????
cdu*_*uck 15
这是将图像裁剪为CGRect的好方法:
- (UIImage*)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
{
//create a context to do our clipping in
UIGraphicsBeginImageContext(rect.size);
CGContextRef currentContext = UIGraphicsGetCurrentContext();
//create a rect with the size we want to crop the image to
//the X and Y here are zero so we start at the beginning of our
//newly created context
CGRect clippedRect = CGRectMake(0, 0, rect.size.width, rect.size.height);
CGContextClipToRect( currentContext, clippedRect);
//create a rect equivalent to the full size of the image
//offset the rect by the X and Y we want to start the crop
//from in order to cut off anything before them
CGRect drawRect = CGRectMake(rect.origin.x * -1,
rect.origin.y * -1,
imageToCrop.size.width,
imageToCrop.size.height);
//draw the image to our clipped context using our offset rect
CGContextDrawImage(currentContext, drawRect, imageToCrop.CGImage);
//pull the image from our cropped context
UIImage *cropped = UIGraphicsGetImageFromCurrentImageContext();
//pop the context to get back to the default
UIGraphicsEndImageContext();
//Note: this is autoreleased
return cropped;
}
或者另一种方式:
- (UIImage *)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect? {
CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);?
UIImage *cropped = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
? return cropped;?
}
Run Code Online (Sandbox Code Playgroud)
来自http://www.hive05.com/2008/11/crop-an-image-using-the-iphone-sdk/.
归档时间: |
|
查看次数: |
5232 次 |
最近记录: |