一个图像到另一个图像大小问题ios

时间:2018-01-13 07:03:09

标签: ios objective-c uiimage overlay uiimagview

我想将一个小图像添加到另一个主图像,就像徽章我正在为此编写代码,但问题是如果背景图像很小,那么水印显示非常大。请提供任何建议。

[_productImg sd_setImageWithURL:[NSURL URLWithString:imgUrl]
                   placeholderImage:nil
                          completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {

                              if (image.size.width > 0 && img.isdefaultImage) {
                                  UIImage *watermark = [UIImage imageNamed:@"is_default_big"];
                                  CGFloat scale = image.scale;
                                  UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0);
                                   [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
                                  [watermark drawInRect:CGRectMake(image.size.width - watermark.size.width, 0, watermark.size.width, watermark.size.height)];
                                  UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
                                  UIGraphicsEndImageContext();
                                  _productImg.image = result;

                              }

                              [_spinner stopAnimating];
                              [_spinner removeFromSuperview];

                          }];


      });

Check this

enter image description here

1 个答案:

答案 0 :(得分:1)

由于您的图片显然有不同的尺寸,但您似乎显示它们缩放到(大致)相同的尺寸,您需要缩放徽章。

尝试这样的事情:

// Add this line
CGFloat desiredBadgeSize = 0.2; // Badge is 20% of image height

// Change these lines
CGFloat scale = image.size.height / watermark.size.height * desiredBadgeSize;
[watermark drawInRect:CGRectMake(image.size.width - watermark.size.width * scale, 0, watermark.size.width * scale, watermark.size.height * scale)];

上面的代码假定您将图像缩放到设备上的相同高度。

另一种通常更快的方法是将徽章放在UIImageView中,然后将其添加到包含图像的视图中。这样,您仍然可以获得原始图像,并且如果需要,也可以轻松删除徽章。