iPhone: - 以最简单的方式裁剪所需形状和大小的图像

时间:2012-05-24 06:46:26

标签: iphone xcode

我正在尝试根据我的愿望来裁剪图像....我的电影版类型的应用程序.....并在我的应用程序中使用它

我尝试了很多选择,但是没有一个对我有用 我在堆栈上阅读答案但没有用

plzz帮帮我

image = [UIImage imageNamed:@"images2.jpg"];
imageView = [[UIImageView alloc] initWithImage:image];

CGSize size = [image size];

[imageView setFrame:CGRectMake(0, 0, size.width, size.height)];
[[self view] addSubview:imageView];
[imageView release];    

感谢

4 个答案:

答案 0 :(得分:11)

以下是将图片大小调整为所需大小的确切代码

    CGSize itemSize = CGSizeMake(320,480); // give any size you want to give

    UIGraphicsBeginImageContext(itemSize);

    CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height);

    [myimage drawInRect:imageRect];


    myimage = UIGraphicsGetImageFromCurrentImageContext();  

    UIGraphicsEndImageContext();

现在我的图片是你想要的尺寸

答案 1 :(得分:3)

请找到以下代码裁剪图像。

// Create the image from a png file
UIImage *image = [UIImage imageNamed:@"prgBinary.jpg"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

// Get size of current image
CGSize size = [image size];

// Frame location in view to show original image
[imageView setFrame:CGRectMake(0, 0, size.width, size.height)];
[[self view] addSubview:imageView];
[imageView release];    

// Create rectangle that represents a cropped image  
// from the middle of the existing image
CGRect rect = CGRectMake(size.width / 4, size.height / 4 , 
    (size.width / 2), (size.height / 2));

// Create bitmap image from original image data,
// using rectangle to specify desired crop area
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect);
UIImage *img = [UIImage imageWithCGImage:imageRef]; 
CGImageRelease(imageRef);

// Create and show the new image from bitmap data
imageView = [[UIImageView alloc] initWithImage:img];
[imageView setFrame:CGRectMake(0, 200, (size.width / 2), (size.height / 2))];
[[self view] addSubview:imageView];
[imageView release];

摘自How to Crop an Image

答案 2 :(得分:2)

我认为这是最简单的方法:

CGRect rect = CGRectMake(0.0, 0.0, 320.0, 430.0);
CGImageRef tempImage = CGImageCreateWithImageInRect([originalImage CGImage], rect);
UIImage *newImage = [UIImage imageWithCGImage:tempImage];
CGImageRelease(tempImage);

但是不要忘记在裁剪之前清除imageOrientation,否则你会在裁剪后获得旋转图像:

-(UIImage *)normalizeImage:(UIImage *)raw {
    if (raw.imageOrientation == UIImageOrientationUp) return raw;
    UIGraphicsBeginImageContextWithOptions(raw.size, NO, raw.scale);
    [raw drawInRect:(CGRect){0, 0, raw.size}];
    UIImage *normalizedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return normalizedImage;
}

答案 3 :(得分:0)

这是一个使用Dinesh的答案来获取图像的方形缩略图的课程

class func returnSquareCroppedImage(theImage:UIImage)->UIImage{

    var mySize:CGFloat = 100.0
    var imageRect:CGRect

    if theImage.size.width > theImage.size.height {

        mySize = theImage.size.height
        let xAdjust = 0-((theImage.size.width - theImage.size.height)/2)
        imageRect = CGRectMake(xAdjust, 0, theImage.size.width, theImage.size.height)
    }else{

        mySize = theImage.size.width
        let yAdjust = 0-((theImage.size.height - theImage.size.width)/2)
        imageRect = CGRectMake(0, yAdjust, theImage.size.width, theImage.size.height)
    }

    UIGraphicsBeginImageContext(CGSizeMake(mySize, mySize))

    theImage.drawInRect(imageRect)

    let returnImage = UIGraphicsGetImageFromCurrentImageContext()

    return returnImage
}