0
我有一個尺寸爲11900x3200的圖像和一個標記在(2745,2730)上的點。這個尺寸太大,無法在iPhone屏幕上顯示。我想將圖像縮小到3200x2000。如何計算新縮小圖像上的新(x,y)位置。縮放圖像並重新計算(x,y)
我有一個尺寸爲11900x3200的圖像和一個標記在(2745,2730)上的點。這個尺寸太大,無法在iPhone屏幕上顯示。我想將圖像縮小到3200x2000。如何計算新縮小圖像上的新(x,y)位置。縮放圖像並重新計算(x,y)
您可以使用基於比率的圖像縮放實現此目的。
這種方法,你可以得到正確的形象沒有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;
}
嗨,我如何重新計算我的(x,y)在圖像縮小後的位置 – user3637382 2014-09-04 17:29:20
這似乎更數學問題的,但不應該3200分之11900= A,2745/A = X1,二千分之三千二= B,2730/B = Y1工作?儘管您的水平縮放比例與垂直縮放比例有多大,但您的圖片看起來會變得很糟糕。 – LyricalPanda 2014-09-03 21:03:40
嗨,我試了這個,但是新的X1,Y1被標記在不同的點。我失去了我原來的標記位置,並標記在不同的位置 – user3637382 2014-09-03 21:18:42
不應該在x = 2745 * 3200/11900; y = 2730 * 2000/3200;但是你有沒有注意到你正在改變比例? – 2014-09-03 22:12:26