2013-04-10 43 views
2

我有一個應用程序,其中我將(360,480)的圖像縮放爲(320,480),然後裁剪圖像。它工作正常。但是當我們獲得圖像時,它獲得了一個縮放類型image.projected front.Here就是我怎麼做的it.`裁剪後的圖像正在iPhone中放大?

[self imageWithImage:(UIImage *)image scaledToSize:CGSizeMake(160.0f,240.0f)]; 

和我defenition是 -

-(UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 
    //UIGraphicsBeginImageContext(newSize); 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext(); 

    [self cropimage:newImage]; 
    return newImage; 
} 

和cropimage我這樣做這樣的 -

-(void)cropimage:(UIImage *)image 
{ 

    CGRect cropRect = CGRectMake(20,100,280,200); 
    CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], cropRect); 
    UIImage* croppedImage = [UIImage imageWithCGImage:imageRef]; 
     CGImageRelease(imageRef); 

    NSData *pictureData = [NSData dataWithData:UIImagePNGRepresentation(croppedImage)]; 
} 

有人可以找出我的方法有什麼問題嗎?

+0

我的第一個猜測:原始uiimage的比例等於1.0,如果不是,您可能需要相應地修改cropRect。 – guenis 2013-04-10 14:06:21

回答

0

嘗試通過傳遞image.scale而不是0.0來強制它使用傳入的圖像比例。

-(UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 
    //UIGraphicsBeginImageContext(newSize); 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, image.scale); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext(); 

    [self cropimage:newImage]; 
    return newImage; 
}