【问题标题】:How do you crop a UIImage correctly如何正确裁剪 UIImage
【发布时间】:2014-07-14 01:13:08
【问题描述】:

我有一个横向的 UIImage,我想切掉边缘使其成为纵向,同时保持纵横比。

  UIImage *photo = myUIImage;

  // width = 3264
  float width = photo.size.width;

  // height = 2448
  float height = photo.size.height;

我需要在切掉左右边缘(保持中心)的同时得到以下尺寸:

  width = 1836
  height = 2448

【问题讨论】:

  • 您是要裁剪图像本身还是在图像包含在 imageView 中时裁剪图像就足够了?

标签: ios uiimage uiimagepickercontroller


【解决方案1】:

idk 如果有帮助,但这里是 iPod、iPad、iPhone 的正确尺寸

if ([[UIScreen mainScreen] bounds].size.height == 480)
{
    // iPhone, iPod Touch
    Image = [UIImage imageNamed:@"7.jpg"];
}

if ([[UIScreen mainScreen] bounds].size.height == 568)
{
    // iPhone 5
    Image = [UIImage imageNamed:@"7.jpg"];
}

if ([[UIScreen mainScreen] bounds].size.height == 1024)
{
    // iPad
    Image = [UIImage imageNamed:@"11@2x.jpg"];
}

self.view.backgroundColor = [UIColor colorWithPatternImage:Image];

【讨论】:

  • 您能解释一下为什么您的代码更深入一点吗?
  • on 确实加载了 if 语句覆盖以使用基于设备的不同图片
【解决方案2】:

试试这个:

- (UIImage *)scaleOldImage:(UIImage *)orig toNewSize:(CGSize)finalSize {


CGSize origSize = orig.size;

CGFloat wScale = finalSize.width / origSize.width;
CGFloat hScale = finalSize.height / origSize.height;
CGFloat finalScale = (wScale > hScale) ? wScale : hScale;

CGRect finalRect = CGRectMake( 0, 0, origSize.width * finalScale, origSize.height * finalScale );
finalRect.origin.x = ( finalSize.width - finalRect.size.width )/2;
finalRect.origin.y = ( finalSize.height - finalRect.size.height )/2;

UIGraphicsBeginImageContextWithOptions( finalSize, YES, 0.0 );
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);

[orig drawInRect:finalRect];
UIImage * finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return finalImage;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-02
    • 2011-02-07
    • 2014-08-23
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 2012-06-17
    相关资源
    最近更新 更多