I try to use GPUImage to resize a image mask to the size of an given image
-(void)imageTaken:(UIImage *)image
{
[super imageTaken:image];
CGFloat sx = image.size.width / self.imageMask.size.width;
CGFloat sy = image.size.height / self.imageMask.size.height;
GPUImageTransformFilter *scaleFilter = [[GPUImageTransformFilter alloc] init];
CATransform3D t3d = CATransform3DMakeScale(sx, sy, 1);
scaleFilter.transform3D = t3d;
GPUImagePicture *scaleImageSource = [[GPUImagePicture alloc] initWithImage:self.imageMask];
[scaleImageSource addTarget:scaleFilter];
[scaleImageSource processImage];
UIImage *scaledMaskImage = [scaleFilter imageFromCurrentlyProcessedOutput] ;
NSLog(@" sx: %f, sy : %f", sx,sy);
NSLog(@"[image size] : %@", NSStringFromCGSize([image size]));
NSLog(@"[_imageMask size] : %@", NSStringFromCGSize([_imageMask size]));
NSLog(@"[scaledMaskImage size] : %@", NSStringFromCGSize([scaledMaskImage size]));
[self.delegate photo:image
imageMask:scaledMaskImage takenOnPhotoMaskViewController:self];
}
Output:
sx: 1.500000, sy : 1.126761
[image size] : {480, 640}
[_imageMask size] : {320, 568}
[scaledMaskImage size] : {640, 1136}
By what I understand [scaledMaskImage size]
should be {480, 640}
, as sx is 1.5 and sy is 1.126761, but as it is {640, 1136}
, its as scaled by 2.0. What did I do wrong?