调整imagView和左栏按钮项目的图像大小

问题描述:

在我的项目中,我有“更改徽标”选项。 enter image description here 点击更改标志前的灰色标志,图库打开,用户从中选择一张照片。这是使用以下代码完成的:调整imagView和左栏按钮项目的图像大小

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ 
    UIImage *image = info[UIImagePickerControllerOriginalImage]; 
    [imagePicker dismissViewControllerAnimated:YES completion:nil]; 
    imgToBeSaved = image; 
    self.imgViewChooseLogo.contentMode = UIViewContentModeScaleAspectFit; 
    self.imgViewChooseLogo.image = image; 
    imageChanged = YES; 
} 

现在这张图片保存在文档目录中。由于此图像应作为所有视图控制器的标志。所以我必须把它设置为使用下面的代码左侧栏按钮项目:

NSData *imageData = [NSData dataWithContentsOfFile:[AppDelegate documentDirectoryWithFilePath]]; 
UIImage *image = [UIImage imageWithData:imageData]; 
UIImage *new = [AppDelegate imageWithImage:image scaledToSize:CGSizeMake(150, 40)]; 
UIImage *new1 = [new imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:new1 style:UIBarButtonItemStylePlain target:nil action:nil]; 
[self.navigationItem setLeftBarButtonItem:barButtonItem]; 

在其中方法scaledToSize竟把

+(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize; 
{ 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

我已经使用了150 * 40,使得我的默认标志完全吻合。问题来了,当我不得不使用从画廊选择一些其他图像。它延伸在酒吧按钮项目上。我不知道如何设置选择图库图像的高度和宽度的比例,以便图像不会在左侧的条形图项目上显示。

+0

如果你不想舒展你应该裁剪图像 - 右 –

+0

BT?我怎么知道图像的哪个部分会被裁剪?我被要求调整图像的宽度和高度,以便从图库中选取的照片看起来不会扭曲 – mars

+0

您应该让用户决定: D - 看我的回答 –

你应该让你的用户在使用之前裁剪图像。看看这些框架(如果你不想实现它自己:

https://github.com/yackle/CLImageEditor

https://github.com/itouch2/PhotoTweaks

+0

thanx为你的帮助bt不要你有任何其他出路。一些没有裁剪的方法。 – mars