2013-05-04 4 views

ответ

0

У вас есть много вариантов. Если вам просто нужно отобразить его на экране, вы можете просто подделать его так, чтобы 1 пиксель миниатюры не был виден. Вы можете поместить UIImageView внутри UIView, чтобы клипы были ограничены.

UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; 
view.backgroundColor = [UIColor clearColor]; 
view.clipsToBounds = YES; 
UIImageView* imgView = [[UIImageView alloc] initWithFrame:CGRectMake(-1, -1, 202, 202)]; 
imgView.image = [asset thumbnail]; 
[view addSubview:imgView]; 

Или еще лучше сделать подкласс UIView и переопределить drawRect.

-(void)drawRect:(CGRect)rect 
{ 
    UIImage* thumb = [asset thumbnail]; 
    [thumb drawInRect:CGRectMake(rect.origin.x-1, rect.origin.y-1, rect.size.width+2, rect.size.height+2)]; 
} 

Или вы можете использовать aspectRatioThumbnail вместо этого и сделать это в квадрате.

UIImageView* imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; 
imgView.image = [asset aspectRatioThumbnail]; 
imgView.contentMode = UIViewContentModeScaleAspectFill; 

Если вам действительно нужно обрезать UIImage, по какой-то причине вы можете это сделать.

UIImage* thumb = [asset thumbnail]; 
CGRect cropRect = CGRectMake(1, 1, thumb.size.width-2, thumb.size.height-2); 
cropRect = CGRectMake(cropRect.origin.x*thumb.scale, cropRect.origin.y*thumb.scale, cropRect.size.height*cropRect.scale);  

CGImageRef imageRef = CGImageCreateWithImageInRect([thumb CGImage], cropRect); 
UIImage* result = [UIImage imageWithCGImage:imageRef scale:thumb.scale orientation:thumb.imageOrientation]; 
CGImageRelease(imageRef); 
0

Нет никаких способов получить миниатюру без 1 пиксельной черной границы.

Вы также можете использовать

[asset aspectRatioThumbnail]; // but it is not rounded. 

Так я думаю, вы должны изменить размер изображения самостоятельно с помощью:

asset.defaultRepresentation.fullScreenImage or 
asset.defaultRepresentation.fullResolutionImage 
+0

fullScreenImage или fullResolutionImage замедляет код, не так ли? –

+0

уверен, что если изображение сильно отличается от замедления, лучше использовать миниатюры –