2014-11-27 4 views
0

У меня возникла проблема с обрезкой изображения.Обрезать изображение до 1: 1, а затем изменить его размер

Мой поток:

1) Обрежьте изображение до 1: 1 (например, если есть изображение размером 665 X 985 точек кадрирование его 665 X 665 точек).

2) изменить размер до 612 X 612 px такой же, как instagram.

Для этого кода я использую:

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
NSData *d=UIImagePNGRepresentation(image); 

CGFloat pic_crop; 
NSLog(@"Size of Image(bytes):%lu",(unsigned long)[d length]); 
NSLog(@" original Image Size :%.2f \n",(float)d.length/1024.0f/1024.0f); 
NSLog(@"Original height --->%f",image.size.height); 
NSLog(@"Original width --->%f",image.size.width); 
if (image.size.height > image.size.width) { 
    pic_crop=image.size.width; 
    NSLog(@"%f",image.size.width); 
} 
else{ 
    pic_crop=image.size.height; 
    NSLog(@"%f",image.size.height); 

} 

тогда я обрезать его, если высота меньше обрезать его размер высоты или ширины размера!

_previewImage.frame = CGRectMake(
          _previewImage.frame.origin.x, 
          _previewImage.frame.origin.y, pic_crop, pic_crop); 



UIImage *croppedImage = [image croppedImage:CGRectMake((image.size.width -_previewImage.frame.size.width)/2, (image.size.height -_previewImage.frame.size.height)/2, _previewImage.frame.size.width, _previewImage.frame.size.height)]; 

NSLog(@"crop height --->%f",croppedImage.size.height); 
NSLog(@"crop width --->%f",croppedImage.size.width); 
NSData *d2=UIImagePNGRepresentation(croppedImage); 

NSLog(@"Size of Image(bytes):%lu",(unsigned long)[d2 length]); 
NSLog(@" After compression :%.2f \n",(float)d2.length/1024.0f/1024.0f); 

Тогда я изменить его размер до 612 X 612 пикселей,

CGSize newSize; 



    newSize = CGSizeMake(612 , 612); 


UIGraphicsBeginImageContext(newSize); 

[croppedImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Это, как я выполнить эту вещь, она полностью работает хорошо в тренажере, но не в устройстве!

Он сильно сжимает изображение на устройстве! Пожалуйста, помогите мне! Заранее спасибо .

ответ

1

Используйте UIGraphicsBeginImageContextWithOptions(newSize, YES, 0.0); для создания контекста изображения, адаптированного к сетчатке или не сетчатке в зависимости от устройства.

+0

ok позвольте мне попробовать bro, и спасибо за ответ –

Смежные вопросы