我在我的應用程序中使用UIImagePickerController拍照,我使用我自己的控件,這意味着UIImagePickerController showsCameraControls屬性設置爲NO,並且在拍攝圖片的overlayView中有一個UIButton。現在,我注意到我保存在照片庫中的圖像實際上顯示的區域比預覽視圖中顯示的區域大。其他人有同樣的問題嗎?任何解決方案,讓圖片顯示預覽中的內容?UIImagePickerController圖像大小
1
A
回答
1
通過預覽我想,你是在談論影像選擇器接口(而不是默認的預覽駁回圖像拾取界面後出現屏幕)。
您應用於圖像選擇器界面(使用cameraViewTransform)的變換無法反映所拍攝的圖像。例如,如果您試圖縮放(進出)應用比例,則需要對獲取的圖像應用相同的(變換),以使圖像拾取器界面中的圖像和實際保存的圖像保持同步。
此外,在應用轉換時,您還必須考慮圖像方向。
2
從選擇器獲取圖像對象後,調整圖像,然後裁剪
我需要同樣的事情 - 在我的情況,挑選適合一旦縮放尺寸,然後裁剪每端,以適應其餘的寬度。 (我在橫向工作,所以可能沒有注意到縱向模式中的任何缺陷。)這裏是我的代碼 - 它是UIImage上的一個關於categeory的部分。我的代碼中的目標大小始終設置爲設備的全屏大小。
@implementation UIImage (Extras)
#pragma mark -
#pragma mark Scale and crop image
- (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize
{
UIImage *sourceImage = self;
UIImage *newImage = nil;
CGSize imageSize = sourceImage.size;
CGFloat width = imageSize.width;
CGFloat height = imageSize.height;
CGFloat targetWidth = targetSize.width;
CGFloat targetHeight = targetSize.height;
CGFloat scaleFactor = 0.0;
CGFloat scaledWidth = targetWidth;
CGFloat scaledHeight = targetHeight;
CGPoint thumbnailPoint = CGPointMake(0.0,0.0);
if (CGSizeEqualToSize(imageSize, targetSize) == NO)
{
CGFloat widthFactor = targetWidth/width;
CGFloat heightFactor = targetHeight/height;
if (widthFactor > heightFactor)
scaleFactor = widthFactor; // scale to fit height
else
scaleFactor = heightFactor; // scale to fit width
scaledWidth = width * scaleFactor;
scaledHeight = height * scaleFactor;
// center the image
if (widthFactor > heightFactor)
{
thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
}
else
if (widthFactor < heightFactor)
{
thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
}
}
UIGraphicsBeginImageContext(targetSize); // this will crop
CGRect thumbnailRect = CGRectZero;
thumbnailRect.origin = thumbnailPoint;
thumbnailRect.size.width = scaledWidth;
thumbnailRect.size.height = scaledHeight;
[sourceImage drawInRect:thumbnailRect];
newImage = UIGraphicsGetImageFromCurrentImageContext();
if(newImage == nil)
NSLog(@"could not scale image");
//pop the context to get back to the default
UIGraphicsEndImageContext();
return newImage;
}
相關問題
- 1. UIImagePickerController大小iPhone 5
- 2. UIImagePickerController的視圖大小不正確
- 3. 如何更改UIImagePickerController的攝像頭視圖大小
- 4. 配置UIImagePickerController的幀大小
- 5. UIImagePickerController圖像方向
- 6. UIImagePickerController損壞圖像
- 7. UIImagePickerController圖像類型
- 8. UIImagePickerController圖像不變
- 9. 在Java中調整圖像大小以縮小圖像大小
- 10. 如何根據圖像大小調整圖像視圖大小?
- 11. 縮小圖像的大小
- 12. PowerShell - 減小圖像大小
- 13. 縮小圖像大小php
- 14. 縮小大圖像
- 15. WordML圖像大小
- 16. UITableViewCellStyleDefault圖像大小
- 17. CSS圖像大小?
- 18. HTML圖像大小
- 19. AVCaptureSessionPresetMedium圖像大小?
- 20. 大小的圖像
- 21. MooFlow圖像大小
- 22. 圖像的像素大小
- 23. 從UIImagePickerController保存圖像抓取圖像?
- 24. NSImageView調整大小與圖像大小
- 25. UIScrollView的大小和圖像的大小
- 26. Android位圖圖像大小
- 27. 原始圖像大小VS顯示圖像大小
- 28. Ruby:無圖像大小調整圖像大小?
- 29. 大圖像查看器大小像2529x3516
- 30. 如何在使用UIImagePickerController拍攝照片後調整圖像大小?
謝謝您的回覆。這不是我真正需要的。我注意到對cameraViewTransform應用一個縮放轉換,那麼你將能夠看到比你實際保存到圖書館更小的區域。 – singingAtom