title: UIImage rounded corners
body: <p>I try to get rounded corners on a UIImage, what I read so far, the easiest way is to use a mask images. For this I used code from TheElements iPhone Example and some image resize code I found. My problem is that resizedImage is always nil and I don't find the error...</p>
  
  <pre><code>- (UIImage *)imageByScalingProportionallyToSize:(CGSize)targetSize
  {
      CGSize imageSize = [self size];
      float width = imageSize.width;
      float height = imageSize.height;
  
      // scaleFactor will be the fraction that we'll
      // use to adjust the size. For example, if we shrink
      // an image by half, scaleFactor will be 0.5. the
      // scaledWidth and scaledHeight will be the original,
      // multiplied by the scaleFactor.
      //
      // IMPORTANT: the "targetHeight" is the size of the space
      // we're drawing into. The "scaledHeight" is the height that
      // the image actually is drawn at, once we take into
      // account the ideal of maintaining proportions
  
      float scaleFactor = 0.0; 
      float scaledWidth = targetSize.width;
      float scaledHeight = targetSize.height;
  
      CGPoint thumbnailPoint = CGPointMake(0,0);
  
      // since not all images are square, we want to scale
      // proportionately. To do this, we find the longest
      // edge and use that as a guide.
  
      if ( CGSizeEqualToSize(imageSize, targetSize) == NO )
      { 
          // use the longeset edge as a guide. if the
          // image is wider than tall, we'll figure out
          // the scale factor by dividing it by the
          // intended width. Otherwise, we'll use the
          // height.
  
          float widthFactor = targetSize.width / width;
          float heightFactor = targetSize.height / height;
  
          if ( widthFactor &lt; heightFactor )
              scaleFactor = widthFactor;
          else
              scaleFactor = heightFactor;
  
          // ex: 500 * 0.5 = 250 (newWidth)
  
          scaledWidth = width * scaleFactor;
          scaledHeight = height * scaleFactor;
  
          // center the thumbnail in the frame. if
          // wider than tall, we need to adjust the
          // vertical drawing point (y axis)
  
          if ( widthFactor &lt; heightFactor )
              thumbnailPoint.y = (targetSize.height - scaledHeight) * 0.5;
  
          else if ( widthFactor &gt; heightFactor )
              thumbnailPoint.x = (targetSize.width - scaledWidth) * 0.5;
      }
  
  
      CGContextRef mainViewContentContext;
      CGColorSpaceRef colorSpace;
  
      colorSpace = CGColorSpaceCreateDeviceRGB();
  
      // create a bitmap graphics context the size of the image
      mainViewContentContext = CGBitmapContextCreate (NULL, targetSize.width, targetSize.height, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast);
  
      // free the rgb colorspace
      CGColorSpaceRelease(colorSpace);    
  
      if (mainViewContentContext==NULL)
          return NULL;
  
      //CGContextSetFillColorWithColor(mainViewContentContext, [[UIColor whiteColor] CGColor]);
      //CGContextFillRect(mainViewContentContext, CGRectMake(0, 0, targetSize.width, targetSize.height));
  
      CGContextDrawImage(mainViewContentContext, CGRectMake(thumbnailPoint.x, thumbnailPoint.y, scaledWidth, scaledHeight), self.CGImage);
  
      // Create CGImageRef of the main view bitmap content, and then
      // release that bitmap context
      CGImageRef mainViewContentBitmapContext = CGBitmapContextCreateImage(mainViewContentContext);
      CGContextRelease(mainViewContentContext);
  
      CGImageRef maskImage = [[UIImage imageNamed:@"Mask.png"] CGImage];
  
      CGImageRef resizedImage = CGImageCreateWithMask(mainViewContentBitmapContext, maskImage);
      CGImageRelease(mainViewContentBitmapContext);
  
      // convert the finished resized image to a UIImage 
      UIImage *theImage = [UIImage imageWithCGImage:resizedImage];
  
      // image is retained by the property setting above, so we can 
      // release the original
      CGImageRelease(resizedImage);
  
      // return the image
      return theImage;
  }
  </code></pre>