ios - 将图像裁剪为 1 :1 and then resizing it

标签 ios iphone xcode image retina

我在裁剪图像时遇到问题。

我的流程是:

1)将图像裁剪为 1:1(例如,如果有任何尺寸为 665 X 985 像素的图像,则将其裁剪为 665 X 665 像素)。

2) 将其调整为 612 X 612 像素,与 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();

这就是我执行此操作的方式,它在模拟器中运行完全正常,但在设备中运行不佳!

它在设备中缩小了很多图片!请帮帮我!提前致谢。

最佳答案

使用 UIGraphicsBeginImageContextWithOptions(newSize, YES, 0.0); 创建一个适合视网膜或非视网膜的图像上下文,具体取决于设备。

关于ios - 将图像裁剪为 1 :1 and then resizing it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27163995/

相关文章:

ios - 无法对下载到数组中的值求和

ios - 自定义 UICollectionViewCell 中的 UIActivityIndi​​cator - 仅在第一个单元格中显示/设置动画

xcode - Xcode 4 中的界面生成器

ios - NSLog 和 LOG 的区别

ios - Swift 协议(protocol)不触发 Objective C 协议(protocol)方法

iphone - 使用 IP 地址和/或主机名获取 Bonjour 地址

iphone - MPMediaQuery 搜索艺术家、专辑和歌曲

iPhone:添加 UIRequiredDeviceCapability

iphone - 多个 alertViews 创建错误

swift - NSMetadataQuery 不返回任何数据