gpt4 book ai didi

ios - PHImageManager 在设备上返回方向不正确的图像

转载 作者:可可西里 更新时间:2023-11-01 05:51:42 28 4
gpt4 key购买 nike

我让用户能够从他们的相机胶卷中挑选照片上传到服务器。

相机胶卷中的方向显示正确。

当我使用模拟器(iphone5、iphone6 等)时,一切都按预期工作,上传到服务器时照片的方向是正确的。

当我连接设备并选择照片时,图像始终以逆时针 90 度为方向。如果我在保存结果之前注销 image.imageOrientation,我可以看到它的“3”表示 UIImageOrientationRight。

有没有人知道为什么在设备上它的 90 CCW 和在模拟器上是正确的?

这是我的代码:

(event.eventAttachments 是一个 PHAsset 数组)

__block NSMutableArray *images = [[NSMutableArray alloc] init];

PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.networkAccessAllowed = YES;
options.synchronous = YES;

for(id asset in event.eventAttachments) {
CGFloat scale = [UIScreen mainScreen].scale;
CGSize targetSize = CGSizeMake(CGRectGetWidth([UIScreen mainScreen].bounds) * scale, CGRectGetHeight([UIScreen mainScreen].bounds) * scale);
[[PHImageManager defaultManager] requestImageForAsset:asset
targetSize:targetSize
contentMode:PHImageContentModeAspectFit
options:options
resultHandler:^(UIImage *result, NSDictionary *info) {
if (result) {
NSMutableDictionary *imageDict = [[NSMutableDictionary alloc] init];
[imageDict setObject:result forKey:@"image"];
[imageDict setObject:[NSString stringWithFormat:@"image.jpg"] forKey:@"name"];
[images addObject: imageDict];
}
}];

}

我对 image.UIImageOrientation 进行 NSLog,我看到了 3。

编辑:想补充一点,如果我使用我的设备,我会进入谷歌图像并下载随机图像,然后选择方向正确的图像。

因此,仅对于使用设备拍摄的照片,方向是错误的。因为模拟器我使用的是模拟器附带的“库存”图像(因为我不能用我的模拟器拍照)。

最佳答案

我通过首先运行图像解决了我的问题:

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

Thanks to an0's answer here

关于ios - PHImageManager 在设备上返回方向不正确的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32585734/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com