2016-06-18 4 views
0

寸法を変更してUIImageのサイズを変更しています。しかし、それは異なる次元を示しています。 iPhone 6では、画面の大きさよりも1.25倍の時間を選択します(937 * 1667)。しかし、私のサイズ変更操作を完了した後は938 * 1251になります。宣言された次元でそれが必要です。iOS UIImage寸法変更が動作しません

私のコードは次のとおりです。

NSData *imageData; 
    imageData=[[NSData alloc] initWithData:UIImageJPEGRepresentation((image), 1.0)]; 

    CGSize sz; 
    sz.width=((isIphone4||isIphone5)?320*2.3:iPhone6?750*1.25:414*1.8); 
    sz.height=((isIphone4||isIphone5)?568*2.3:iPhone6?667*1.25:768*1.8); 

    if([imageData length]/1024>400) 
     image=[self resizeImage:image scaledToSize:sz]; 

//function call 

-(UIImage *)resizeImage:(UIImage *)image scaledToSize:(CGSize)targetSize 
{ 
    float actualHeight = image.size.height; 
    float actualWidth = image.size.width; 
    float maxHeight = targetSize.height; 
    float maxWidth = targetSize.width; 
    float imgRatio = actualWidth/actualHeight; 
    float maxRatio = maxWidth/maxHeight; 
    float compressionQuality = 0.50;//50 percent compression 

    if (actualHeight > maxHeight || actualWidth > maxWidth) 
    { 
     if(imgRatio < maxRatio) 
     { 
     //adjust width according to maxHeight 
     imgRatio = maxHeight/actualHeight; 
     actualWidth = imgRatio * actualWidth; 
     actualHeight = maxHeight; 
    } 
    else if(imgRatio > maxRatio) 
    { 
     //adjust height according to maxWidth 
     imgRatio = maxWidth/actualWidth; 
     actualHeight = imgRatio * actualHeight; 
     actualWidth = maxWidth; 
    } 
    else 
    { 
     actualHeight = maxHeight; 
     actualWidth = maxWidth; 
    } 
} 

CGRect rect = CGRectMake(0.0, 0.0, actualWidth, actualHeight); 
UIGraphicsBeginImageContext(rect.size); 
[image drawInRect:rect]; 
UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
NSData *imageData = UIImageJPEGRepresentation(img, compressionQuality); 
UIGraphicsEndImageContext(); 
return [UIImage imageWithData:imageData]; 

} 

正しい次元の解決策になる可能性は?

答えて

0

はい、最後に数時間後に解決しました。私は間違った方法で試しました。実際には、特定のメモリサイズでサイズを変更するとディメンションを修正することはできません。次のメソッドは、イメージを範囲サイズ(Byte)に変換し、次元はメソッド自体で定義されます。

 NSData *imageData; 
    imageData=[[NSData alloc] initWithData:UIImageJPEGRepresentation((image), 1.0)]; 
    CGFloat scale= (400*1024)/(CGFloat)[imageData length]; 
    UIImage *small_image=[UIImage imageWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation]; 
    imageData = UIImageJPEGRepresentation(small_image, scale); 
関連する問題