Files
comaps/iphone/Maps/Core/WebImage/MWMImageCoder.m
Konstantin Pastbin e3e4a1985a Organic Maps sources as of 02.04.2025 (fad26bbf22ac3da75e01e62aa01e5c8e11861005)
To expand with full Organic Maps and Maps.ME commits history run:
  git remote add om-historic [om-historic.git repo url]
  git fetch --tags om-historic
  git replace squashed-history historic-commits
2025-05-08 21:10:51 +07:00

52 lines
1.4 KiB
Objective-C

#import "MWMImageCoder.h"
@implementation MWMImageCoder
- (UIImage *)imageWithData:(NSData *)data {
UIImage *image = [UIImage imageWithData:data];
if (!image) {
return nil;
}
CGImageRef cgImage = image.CGImage;
size_t width = CGImageGetWidth(cgImage);
size_t height = CGImageGetHeight(cgImage);
int32_t flags;
if ([self imageHasAlpha:image]) {
flags = kCGImageAlphaPremultipliedLast;
} else {
flags = kCGImageAlphaNoneSkipLast;
}
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, width, height, 8, width * 4, colorSpace, flags);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgImage);
CGImageRef resultCgImage = CGBitmapContextCreateImage(context);
UIImage *resultImage = [UIImage imageWithCGImage:resultCgImage];
CGImageRelease(resultCgImage);
CGContextRelease(context);
return resultImage;
}
- (NSData *)dataFromImage:(UIImage *)image {
if ([self imageHasAlpha:image]) {
return UIImagePNGRepresentation(image);
} else {
return UIImageJPEGRepresentation(image, 0.9);
}
}
- (BOOL)imageHasAlpha:(UIImage *)image {
CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(image.CGImage);
return (alphaInfo == kCGImageAlphaPremultipliedLast ||
alphaInfo == kCGImageAlphaPremultipliedFirst ||
alphaInfo == kCGImageAlphaLast ||
alphaInfo == kCGImageAlphaFirst);
}
@end