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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/10732470/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 00:24:17  来源:igfitidea点击:

iPhone:-simplest way to crop image of desired shape and size

iphonexcode

提问by swetank

i am trying to crop image according to my desire....for my cinemagram type app.....and use it in my application

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

i have tried a lot of options but none of tham is...usefull for me i read answers on stack over flow but of no use

我尝试了很多选择,但没有一个是......对我有用我阅读堆栈溢出的答案但没有用

plzz help me out

请帮帮我

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];    

thanks

谢谢

回答by Dinesh Kaushik

Here is the exact code to resize your image to desired size

这是将图像调整为所需大小的确切代码

    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();

Now my image is of your desired size

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

回答by Akhilesh Sharma

Please find the code below to the crop the image.

请找到下面的代码来裁剪图像。

// 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];

Referred from How to Crop an Image

参考如何裁剪图像

回答by Denis Zarubin

I think this is the most simple way:

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

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

But don't forget to clear imageOrientation BEFORE cropping, otherwise you will get rotated image after cropping:

但是不要忘记在裁剪前清除 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;
}

回答by PJeremyMalouf

Here is a class using Dinesh's answer to get a square thumbnail of an image

这是一个使用 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
}