Last active
December 30, 2015 06:49
-
-
Save fjolnir/7791888 to your computer and use it in GitHub Desktop.
http://d.asgeirsson.is/Vvpo <-inputs (PNG: 1.5m JPEG+Mask: ~100k)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
+ (NSString *)_pathForImageName:(NSString *)aFileName | |
{ | |
NSString * const extension = [aFileName pathExtension]; | |
if([extension length] == 0) | |
return | |
[self _pathForImageName:[aFileName stringByAppendingString:@".png"]] | |
?: [self _pathForImageName:[aFileName stringByAppendingString:@".jpeg"]] | |
?: [self _pathForImageName:[aFileName stringByAppendingString:@".jpg"]]; | |
else { | |
aFileName = [aFileName stringByDeletingPathExtension]; | |
if([[UIScreen mainScreen] scale] == 2.0f) | |
return [[NSBundle coineyKitBundle] pathForResource:[aFileName stringByAppendingString:@"@2x"] | |
ofType:extension] | |
?: [[NSBundle coineyKitBundle] pathForResource:aFileName ofType:extension]; | |
else | |
return [[NSBundle coineyKitBundle] pathForResource:aFileName ofType:extension] | |
?: [[NSBundle coineyKitBundle] pathForResource:[aFileName stringByAppendingString:@"@2x"] | |
ofType:extension]; | |
} | |
} | |
+ (UIImage *)cy_imageNamed:(NSString * const)aName | |
{ | |
NSString * const path = [self _pathForImageName:aName]; | |
if(path) { | |
UIImage * const image = [self imageWithContentsOfFile:path]; | |
NSString * const maskPath = [self _pathForImageName:[[aName stringByDeletingPathExtension] stringByAppendingString:@"Mask"]]; | |
if(maskPath) | |
return [image cy_imageByApplyingMask:[self cy_imageWithContentsOfFile:maskPath]]; | |
else | |
return image; | |
} else | |
return [self imageNamed:aName]; | |
} | |
- (UIImage *)cy_imageByApplyingMask:(UIImage * const)aMaskImage | |
{ | |
if(!aMaskImage) | |
return nil; | |
CGImageRef const mask = CGImageMaskCreate(CGImageGetWidth(aMaskImage.CGImage), CGImageGetHeight(aMaskImage.CGImage), | |
CGImageGetBitsPerComponent(aMaskImage.CGImage), | |
CGImageGetBitsPerPixel(aMaskImage.CGImage), | |
CGImageGetBytesPerRow(aMaskImage.CGImage), | |
CGImageGetDataProvider(aMaskImage.CGImage), | |
NULL, FALSE); | |
CGImageRef const maskedCGImage = CGImageCreateWithMask(self.CGImage, mask); | |
UIImage * const maskedImage = [UIImage imageWithCGImage:maskedCGImage | |
scale:self.scale | |
orientation:self.imageOrientation]; | |
CGImageRelease(maskedCGImage); | |
CGImageRelease(mask); | |
return maskedImage; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment