0

私のアプリケーションでは、画像のアップロード機能を使用しており、画像の DPI が多かれ少なかれあれば、アップロードされた画像を 72 DPI に変換したいと考えています。

を使用してそれを行うことができますかcgimagecreate

私に提案してください。

ありがとう。

4

1 に答える 1

0

以下のメソッドで 72 DPI の画像を取得できます。実際には、以下のようにコンテキストから新しい画像を取得するだけで済みます。

-(UIImage *)resizeImageFor72DPI:(UIImage*)image newSize:(CGSize)newSize
{
CGRect newRect= CGRectZero;

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]
    && [[UIScreen mainScreen] scale] == 2.0)
{
    //For retina image
    newSize=CGSizeMake(newSize.width/2.0,newSize.height/2.0);
}
newRect = CGRectIntegral(CGRectMake(0, 0, newSize.width, newSize.height));

CGImageRef imageRef = image.CGImage;

UIGraphicsBeginImageContextWithOptions(newSize, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();

// Set the quality level to use when rescaling
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, newSize.height);

CGContextConcatCTM(context, flipVertical);
// Draw into the context; this scales the image
CGContextDrawImage(context, newRect, imageRef);

// Get the resized image from the context and a UIImage
CGImageRef newImageRef = CGBitmapContextCreateImage(context);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];

CGImageRelease(newImageRef);
UIGraphicsEndImageContext();

return newImage;
}
于 2013-08-19T13:20:57.450 に答える