Я изменение размера и сохранения изображения в documents directory
с помощью этих методовизменено размеры ширина и высота изображения не совпадает при сохранении в каталоге документов
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];
CGSize reSize = [self imageResizeCalculationWithAspectRatio:chosenImage.size];
UIImage *resizedImage = [self resizeImage:chosenImage withAspectRatio:reSize];
[picker dismissViewControllerAnimated:YES completion:NULL];
UIImageWriteToSavedPhotosAlbum(resizedImage, nil, nil, nil);
[self save:resizedImage];
}
-(CGSize)imageResizeCalculationWithAspectRatio:(CGSize)originalSize {
float maxWidth = 2048;
float maxHeight = 2048;
float ratio = 0;
float width = originalSize.width;
float height = originalSize.height;
if(width > maxWidth) {
ratio = maxWidth/width;
height = height * ratio;
width = width * ratio;
}
if(height > maxHeight) {
ratio = maxHeight/height;
width = width * ratio;
height = height * ratio;
}
return CGSizeMake(width, height);
}
- (UIImage *)resizeImage:(UIImage*)image withAspectRatio:(CGSize)ratio {
CGRect scaledRect = AVMakeRectWithAspectRatioInsideRect(image.size, CGRectMake(0, 0, ratio.width, ratio.height));
UIGraphicsBeginImageContextWithOptions(ratio, NO, 0);
[image drawInRect:scaledRect];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
-(void)save:(UIImage*)image {
NSString *stringPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"New Folder"];
// New Folder is your folder name
NSError *error = nil;
if (![[NSFileManager defaultManager] fileExistsAtPath:stringPath])
[[NSFileManager defaultManager] createDirectoryAtPath:stringPath withIntermediateDirectories:NO attributes:nil error:&error];
NSString *fileName = [stringPath stringByAppendingFormat:@"/image.jpg"];
NSData *data = UIImageJPEGRepresentation(image, 1.0);
[data writeToFile:fileName atomically:YES];
}
Мои 11000 x 5000 dimension image A from gallery
изменении размеров моих методов, как <UIImage: 0x12ea72490> size {2048, 931} orientation 0 scale 3.000000
НО сохранение в 6144 × 2793 dimension
и 8.6 mb in size
Мой 720 x 480 dimension image B from gallery
изменении размеров моих методов, как <UIImage: 0x12ea9a360> size {720, 480} orientation 0 scale 3.000000
НО сохранение в 2160 × 1440 dimension
и 123 kb in size
Почему размеры изображения превышают размеры, рассчитанные моими методами, я хочу сохранить изображение в размерах, размер которых изменяется.
Как я могу это достичь?
пожалуйста причина вниз голосования .... –