gpt4 book ai didi

ios - ALAssetsLibrary 图像扭曲

转载 作者:行者123 更新时间:2023-11-29 03:24:11 24 4
gpt4 key购买 nike

我使用以下代码从相机胶卷加载图像。但是当图像显示在 uiimageview 中时,图像有时会向左旋转 90 度。我该如何纠正这个问题?谢谢!

ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
{
ALAssetRepresentation *rep = [myasset defaultRepresentation];
CGImageRef iref = [rep fullResolutionImage];
if (iref) {
cell.image.image = [UIImage imageWithCGImage:iref];
}
};

ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror)
{
NSLog(@"Can't get image - %@",[myerror localizedDescription]);
};


NSString *urlString = [[_alleArtikel objectAtIndex:indexPath.row] bildURL];
NSURL *asseturl = [NSURL URLWithString:urlString];
ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];
[assetslibrary assetForURL:asseturl
resultBlock:resultblock
failureBlock:failureblock];

更新:

使用解决方案时:

            dispatch_async(dispatch_get_main_queue(), ^{
cell.image.image = [UIImage imageWithCGImage:iref scale:[rep scale] orientation:(UIImageOrientation)[rep orientation]];
});

应用程序崩溃,我收到以下错误:

invalid attempt to access <ALAssetRepresentationPrivate: 0x176a3350> past the lifetime of its owning ALAssetsLibrary

我可能应该说,我正在使用 cellForItemAtIndexPath 方法内的代码。

更新2:

我能够通过在更新用户界面时不使用主队列来避免错误。我这里有一个小节点,上面的代码为给定的单元格加载了错误的图像。很奇怪。

最佳答案

您必须将您的方法编辑为

if (iref) {

dispatch_async(dispatch_get_main_queue(), ^{

cell.image.image = [UIImage imageWithCGImage:iref scale:[rep scale] orientation:(UIImageOrientation)[rep orientation]];
});
}

上述代码将检索 Assets 图像及其捕获/原始方向。

您必须更新主线程上的用户界面以获得更好的性能。所以你必须使用其中之一

dispatch_async(dispatch_get_main_queue()

performSelectorOnMainThread

关于ios - ALAssetsLibrary 图像扭曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20689538/

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