2013-06-28 96 views
0

我正在開發一個應用程序,用戶在其中單擊圖像並上傳它們。我的應用程序中有一個按鈕,點擊它時,相機模式打開。用戶可以點擊圖片並查看預覽。在預覽圖像看起來不錯,它佔據整個屏幕。稍後,我必須在寬度爲110和高度爲111的UIImageView中顯示此圖像。當我在此顯示圖像時,圖像會變形並在邊緣處裁剪。我的主要目標是保持寬高比。調整圖像保持縱橫比

我試過這樣做。

- (void)displayCapturedImage 
{ 
//[self.imageView setImage:self.capturedImage]; 
    CGSize smallSize = CGSizeMake(110, 111); 
    [self.imageView setImage:[self imageWithImage:self.capturedImage scaledToSize:smallSize]]; 

} 

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

    return newImage; 
} 

但這不適合我。圖像仍然失真。

回答

1

您需要自己計算比例比例。確定圖像需要多小,並將其應用於寬度和高度。

喜歡的東西

float widthFactor = targetWidth/width; 
      float heightFactor = targetHeight/height; 

      if (widthFactor < heightFactor) 
       scaleFactor = widthFactor; 
      else 
       scaleFactor = heightFactor; 

      scaledWidth = width * scaleFactor; 
      scaledHeight = height * scaleFactor; 

      if (widthFactor < heightFactor) 
       thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5; 

      else if (widthFactor > heightFactor) 
       thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;