2014-09-03 60 views
0

我有一個尺寸爲11900x3200的圖像和一個標記在(2745,2730)上的點。這個尺寸太大,無法在iPhone屏幕上顯示。我想將圖像縮小到3200x2000。如何計算新縮小圖像上的新(x,y)位置。縮放圖像並重新計算(x,y)

+1

這似乎更數學問題的,但不應該3200分之11900= A,2745/A = X1,二千分之三千二= B,2730/B = Y1工作?儘管您的水平縮放比例與垂直縮放比例有多大,但您的圖片看起來會變得很糟糕。 – LyricalPanda 2014-09-03 21:03:40

+0

嗨,我試了這個,但是新的X1,Y1被標記在不同的點。我失去了我原來的標記位置,並標記在不同的位置 – user3637382 2014-09-03 21:18:42

+0

不應該在x = 2745 * 3200/11900; y = 2730 * 2000/3200;但是你有沒有注意到你正在改變比例? – 2014-09-03 22:12:26

回答

0

您可以使用基於比率的圖像縮放實現此目的。

這種方法,你可以得到正確的形象沒有pixalate。

float ori_height=image.size.height; 
float ori_width=image.size.width; 



    NSString *[email protected]""; 

    if (ori_height>ori_width) 
    { 
     [email protected]"PORTRAIT"; 
    } 

    if (ori_width>ori_height) 
    { 
     [email protected]"LANDSCAPE"; 
    } 


    if ([orientation isEqualToString:@"LANDSCAPE"]) 
    { 





     if (ori_height<300) 
     { 

      int height_ratio=ori_height/4; 
      int width_ratio=ori_width/4; 

      UIGraphicsBeginImageContext(CGSizeMake(width_ratio,height_ratio)); 




      UIImage *currentImage = [self imageWithImageSimple:image scaledToSize:CGSizeMake(width_ratio, height_ratio)]; 


     } 
     else 
     { 
      int height_ratio=ori_height/6; 
      int width_ratio=ori_width/6; 



      UIGraphicsBeginImageContext(CGSizeMake(width_ratio,height_ratio)); 


      UIImage *currentImage = [self imageWithImageSimple:image scaledToSize:CGSizeMake(width_ratio, height_ratio)]; 

     } 

    } 
    else if ([orientation isEqualToString:@"PORTRAIT"]) 
    { 
     //NSLog(@"portrait"); 
     if (ori_height<300) 
     { 
      ... 
     } 
     else 
     { 
      int height_ratio=ori_height/6; 
      int width_ratio=ori_width/6; 



      UIGraphicsBeginImageContext(CGSizeMake(width_ratio,height_ratio)); 


     UIImage *currentImage = [self imageWithImageSimple:image scaledToSize:CGSizeMake(width_ratio, height_ratio)]; 

      //[currentImage drawInRect: CGRectMake(0, 0, width_ratio, height_ratio)]; 

     } 
    } 



    UIGraphicsEndImageContext(); 

然後另一種方法

-(UIImage *)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize 
{ 

UIGraphicsBeginImageContext(newSize); 

[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

return newImage; 
} 
+0

嗨,我如何重新計算我的(x,y)在圖像縮小後的位置 – user3637382 2014-09-04 17:29:20