From c6ac5f8e052488e2776fa859dd86e1acd91d2ba2 Mon Sep 17 00:00:00 2001 From: Blazej Stanek Date: Fri, 28 Feb 2014 21:12:46 +0100 Subject: [PATCH 1/2] white areas trimming --- .../project.pbxproj | 27 + .../Transparency Trim Demo/ELCAppDelegate.h | 4 +- .../Transparency Trim Demo/ELCAppDelegate.m | 4 +- .../ELCWhiteViewController.h | 17 + .../ELCWhiteViewController.m | 27 + .../Transparency Trim Demo/UIImage+Trim.h | 1 + .../Transparency Trim Demo/UIImage+Trim.m | 137 ++- .../demo_white_image.png | Bin 0 -> 13890 bytes .../demo_white_image@2x.png | Bin 0 -> 49322 bytes .../en.lproj/ELCViewController.xib | 69 +- .../en.lproj/ELCWhiteViewController.xib | 839 ++++++++++++++++++ 11 files changed, 1104 insertions(+), 21 deletions(-) create mode 100644 Transparency Trim Demo/Transparency Trim Demo/ELCWhiteViewController.h create mode 100644 Transparency Trim Demo/Transparency Trim Demo/ELCWhiteViewController.m mode change 100644 => 100755 Transparency Trim Demo/Transparency Trim Demo/UIImage+Trim.m create mode 100755 Transparency Trim Demo/Transparency Trim Demo/demo_white_image.png create mode 100755 Transparency Trim Demo/Transparency Trim Demo/demo_white_image@2x.png create mode 100644 Transparency Trim Demo/Transparency Trim Demo/en.lproj/ELCWhiteViewController.xib diff --git a/Transparency Trim Demo/Transparency Trim Demo.xcodeproj/project.pbxproj b/Transparency Trim Demo/Transparency Trim Demo.xcodeproj/project.pbxproj index b25269f..e67446f 100644 --- a/Transparency Trim Demo/Transparency Trim Demo.xcodeproj/project.pbxproj +++ b/Transparency Trim Demo/Transparency Trim Demo.xcodeproj/project.pbxproj @@ -21,6 +21,10 @@ 6B06373E177B30D900B55AC5 /* UIImage+Trim.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B06373D177B30D900B55AC5 /* UIImage+Trim.m */; }; 6B063741177B33B900B55AC5 /* demo_image.png in Resources */ = {isa = PBXBuildFile; fileRef = 6B06373F177B33B900B55AC5 /* demo_image.png */; }; 6B063742177B33B900B55AC5 /* demo_image@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6B063740177B33B900B55AC5 /* demo_image@2x.png */; }; + 9F31271D18C1239E008CD497 /* demo_white_image.png in Resources */ = {isa = PBXBuildFile; fileRef = 9F31271B18C1239E008CD497 /* demo_white_image.png */; }; + 9F31271E18C1239E008CD497 /* demo_white_image@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9F31271C18C1239E008CD497 /* demo_white_image@2x.png */; }; + 9F31272118C123D5008CD497 /* ELCWhiteViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F31272018C123D5008CD497 /* ELCWhiteViewController.m */; }; + 9F31272418C123DE008CD497 /* ELCWhiteViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F31272218C123DE008CD497 /* ELCWhiteViewController.xib */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -44,6 +48,11 @@ 6B06373D177B30D900B55AC5 /* UIImage+Trim.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+Trim.m"; sourceTree = ""; }; 6B06373F177B33B900B55AC5 /* demo_image.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = demo_image.png; sourceTree = ""; }; 6B063740177B33B900B55AC5 /* demo_image@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "demo_image@2x.png"; sourceTree = ""; }; + 9F31271B18C1239E008CD497 /* demo_white_image.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = demo_white_image.png; sourceTree = ""; }; + 9F31271C18C1239E008CD497 /* demo_white_image@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "demo_white_image@2x.png"; sourceTree = ""; }; + 9F31271F18C123D5008CD497 /* ELCWhiteViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ELCWhiteViewController.h; sourceTree = ""; }; + 9F31272018C123D5008CD497 /* ELCWhiteViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ELCWhiteViewController.m; sourceTree = ""; }; + 9F31272318C123DE008CD497 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ELCWhiteViewController.xib; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -97,6 +106,9 @@ 6B063731177B30C400B55AC5 /* ELCViewController.h */, 6B063732177B30C400B55AC5 /* ELCViewController.m */, 6B063734177B30C400B55AC5 /* ELCViewController.xib */, + 9F31271F18C123D5008CD497 /* ELCWhiteViewController.h */, + 9F31272018C123D5008CD497 /* ELCWhiteViewController.m */, + 9F31272218C123DE008CD497 /* ELCWhiteViewController.xib */, 6B063720177B30C400B55AC5 /* Supporting Files */, ); path = "Transparency Trim Demo"; @@ -107,6 +119,8 @@ children = ( 6B06373F177B33B900B55AC5 /* demo_image.png */, 6B063740177B33B900B55AC5 /* demo_image@2x.png */, + 9F31271B18C1239E008CD497 /* demo_white_image.png */, + 9F31271C18C1239E008CD497 /* demo_white_image@2x.png */, 6B063721177B30C400B55AC5 /* Transparency Trim Demo-Info.plist */, 6B063722177B30C400B55AC5 /* InfoPlist.strings */, 6B063725177B30C400B55AC5 /* main.m */, @@ -171,11 +185,14 @@ buildActionMask = 2147483647; files = ( 6B063724177B30C400B55AC5 /* InfoPlist.strings in Resources */, + 9F31271E18C1239E008CD497 /* demo_white_image@2x.png in Resources */, 6B06372C177B30C400B55AC5 /* Default.png in Resources */, 6B06372E177B30C400B55AC5 /* Default@2x.png in Resources */, 6B063730177B30C400B55AC5 /* Default-568h@2x.png in Resources */, + 9F31272418C123DE008CD497 /* ELCWhiteViewController.xib in Resources */, 6B063736177B30C400B55AC5 /* ELCViewController.xib in Resources */, 6B063741177B33B900B55AC5 /* demo_image.png in Resources */, + 9F31271D18C1239E008CD497 /* demo_white_image.png in Resources */, 6B063742177B33B900B55AC5 /* demo_image@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -190,6 +207,7 @@ 6B063726177B30C400B55AC5 /* main.m in Sources */, 6B06372A177B30C400B55AC5 /* ELCAppDelegate.m in Sources */, 6B063733177B30C400B55AC5 /* ELCViewController.m in Sources */, + 9F31272118C123D5008CD497 /* ELCWhiteViewController.m in Sources */, 6B06373E177B30D900B55AC5 /* UIImage+Trim.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -213,6 +231,14 @@ name = ELCViewController.xib; sourceTree = ""; }; + 9F31272218C123DE008CD497 /* ELCWhiteViewController.xib */ = { + isa = PBXVariantGroup; + children = ( + 9F31272318C123DE008CD497 /* en */, + ); + name = ELCWhiteViewController.xib; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -345,6 +371,7 @@ 6B06373B177B30C400B55AC5 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/Transparency Trim Demo/Transparency Trim Demo/ELCAppDelegate.h b/Transparency Trim Demo/Transparency Trim Demo/ELCAppDelegate.h index c6f46f7..01b0475 100644 --- a/Transparency Trim Demo/Transparency Trim Demo/ELCAppDelegate.h +++ b/Transparency Trim Demo/Transparency Trim Demo/ELCAppDelegate.h @@ -8,12 +8,12 @@ #import -@class ELCViewController; +@class UIViewController; @interface ELCAppDelegate : UIResponder @property (strong, nonatomic) UIWindow *window; -@property (strong, nonatomic) ELCViewController *viewController; +@property (strong, nonatomic) UIViewController *viewController; @end diff --git a/Transparency Trim Demo/Transparency Trim Demo/ELCAppDelegate.m b/Transparency Trim Demo/Transparency Trim Demo/ELCAppDelegate.m index dbbfa7d..fe9e1de 100644 --- a/Transparency Trim Demo/Transparency Trim Demo/ELCAppDelegate.m +++ b/Transparency Trim Demo/Transparency Trim Demo/ELCAppDelegate.m @@ -8,7 +8,7 @@ #import "ELCAppDelegate.h" -#import "ELCViewController.h" +#import "ELCWhiteViewController.h" @implementation ELCAppDelegate @@ -16,7 +16,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. - self.viewController = [[ELCViewController alloc] initWithNibName:@"ELCViewController" bundle:nil]; + self.viewController = [[ELCWhiteViewController alloc] initWithNibName:@"ELCWhiteViewController" bundle:nil]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; diff --git a/Transparency Trim Demo/Transparency Trim Demo/ELCWhiteViewController.h b/Transparency Trim Demo/Transparency Trim Demo/ELCWhiteViewController.h new file mode 100644 index 0000000..c255616 --- /dev/null +++ b/Transparency Trim Demo/Transparency Trim Demo/ELCWhiteViewController.h @@ -0,0 +1,17 @@ +// +// ELCWhiteViewController.h +// Transparency Trim Demo +// +// Created by Blazej Stanek on 28.02.2014. +// Copyright (c) 2013 Chris Stroud. All rights reserved. +// + +#import + +@interface ELCWhiteViewController : UIViewController + +@property (weak, nonatomic) IBOutlet UIImageView *semiTransparentImageView; +@property (weak, nonatomic) IBOutlet UIImageView *originalImageView; +@property (weak, nonatomic) IBOutlet UIImageView *fullyOpaqueImageView; + +@end diff --git a/Transparency Trim Demo/Transparency Trim Demo/ELCWhiteViewController.m b/Transparency Trim Demo/Transparency Trim Demo/ELCWhiteViewController.m new file mode 100644 index 0000000..f7d5029 --- /dev/null +++ b/Transparency Trim Demo/Transparency Trim Demo/ELCWhiteViewController.m @@ -0,0 +1,27 @@ +// +// ELCWhiteViewController.m +// Transparency Trim Demo +// +// Created by Blazej Stanek on 28.02.2014. +// Copyright (c) 2013 Chris Stroud. All rights reserved. +// + +#import "ELCWhiteViewController.h" +#import "UIImage+Trim.h" + +@implementation ELCWhiteViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + UIImage *originalImage = [UIImage imageNamed:@"demo_white_image"]; + UIImage *semiTransparentCrop = [originalImage imageByTrimmingWhitePixelsWithOpacity:24]; + UIImage *fullOpacityCrop = [originalImage imageByTrimmingWhitePixelsWithOpacity:64]; + + [self.originalImageView setImage:originalImage]; + [self.semiTransparentImageView setImage:semiTransparentCrop]; + [self.fullyOpaqueImageView setImage:fullOpacityCrop]; +} + +@end diff --git a/Transparency Trim Demo/Transparency Trim Demo/UIImage+Trim.h b/Transparency Trim Demo/Transparency Trim Demo/UIImage+Trim.h index 006c4a2..6d12100 100644 --- a/Transparency Trim Demo/Transparency Trim Demo/UIImage+Trim.h +++ b/Transparency Trim Demo/Transparency Trim Demo/UIImage+Trim.h @@ -14,5 +14,6 @@ - (UIEdgeInsets)transparencyInsetsRequiringFullOpacity:(BOOL)fullyOpaque; - (UIImage *)imageByTrimmingTransparentPixels; - (UIImage *)imageByTrimmingTransparentPixelsRequiringFullOpacity:(BOOL)fullyOpaque; +- (UIImage *)imageByTrimmingWhitePixelsWithOpacity:(UInt8)tolerance; @end diff --git a/Transparency Trim Demo/Transparency Trim Demo/UIImage+Trim.m b/Transparency Trim Demo/Transparency Trim Demo/UIImage+Trim.m old mode 100644 new mode 100755 index 7251246..a41e7b7 --- a/Transparency Trim Demo/Transparency Trim Demo/UIImage+Trim.m +++ b/Transparency Trim Demo/Transparency Trim Demo/UIImage+Trim.m @@ -28,7 +28,7 @@ - (UIEdgeInsets)transparencyInsetsRequiringFullOpacity:(BOOL)fullyOpaque uint8_t * bitmapData = calloc((size_t)(width * height), sizeof(uint8_t)); // Create alpha-only bitmap context - CGContextRef contextRef = CGBitmapContextCreate(bitmapData, (NSUInteger)width, (NSUInteger)height, 8, (NSUInteger)bytesPerRow, NULL, kCGImageAlphaOnly); + CGContextRef contextRef = CGBitmapContextCreate(bitmapData, (NSUInteger)width, (NSUInteger)height, 8, (NSUInteger)bytesPerRow, NULL, (kCGBitmapAlphaInfoMask & kCGImageAlphaOnly)); CGImageRef cgImage = self.CGImage; CGRect rect = CGRectMake(0, 0, width, height); @@ -172,4 +172,139 @@ - (UIImage *)imageByTrimmingTransparentPixelsRequiringFullOpacity:(BOOL)fullyOpa return img; } +/* + * Calculates the insets of white area around all sides of the image + * + * @param tolerance + * Maximal difference from white + */ +- (UIEdgeInsets)transparencyInsetsByCuttingWhitespace:(UInt8)tolerance +{ + // Draw our image on that context + NSInteger width = (NSInteger)CGImageGetWidth([self CGImage]); + NSInteger height = (NSInteger)CGImageGetHeight([self CGImage]); + NSInteger bytesPerRow = width * (NSInteger)sizeof(uint8_t); + + // Allocate array to hold alpha channel + uint8_t * bitmapData = calloc((size_t)(width * height), sizeof(uint8_t)); + + // Create grayscale image + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); + CGContextRef contextRef = CGBitmapContextCreate(bitmapData, (NSUInteger)width, (NSUInteger)height, 8, (NSUInteger)bytesPerRow, colorSpace, (kCGBitmapAlphaInfoMask & kCGImageAlphaNone)); + + CGImageRef cgImage = self.CGImage; + CGRect rect = CGRectMake(0, 0, width, height); + CGContextDrawImage(contextRef, rect, cgImage); + + // Sum all non-transparent pixels in every row and every column + uint16_t * rowSum = calloc((size_t)height, sizeof(uint16_t)); + uint16_t * colSum = calloc((size_t)width, sizeof(uint16_t)); + + // Enumerate through all pixels + for (NSInteger row = 0; row < height; row++) { + + for (NSInteger col = 0; col < width; col++) { + + // Found darker pixel + if (bitmapData[row*bytesPerRow + col] <= UINT8_MAX - tolerance) { + + rowSum[row]++; + colSum[col]++; + + } + } + } + + // Initialize crop insets and enumerate cols/rows arrays until we find non-empty columns or row + UIEdgeInsets crop = UIEdgeInsetsZero; + + // Top + for (NSInteger i = 0; i < height; i++) { + + if (rowSum[i] > 0) { + + crop.top = i; + break; + + } + + } + + // Bottom + for (NSInteger i = height - 1; i >= 0; i--) { + + if (rowSum[i] > 0) { + crop.bottom = MAX(0, height - i - 1); + break; + } + + } + + // Left + for (NSInteger i = 0; i < width; i++) { + + if (colSum[i] > 0) { + crop.left = i; + break; + } + + } + + // Right + for (NSInteger i = width - 1; i >= 0; i--) { + + if (colSum[i] > 0) { + + crop.right = MAX(0, width - i - 1); + break; + + } + } + + free(bitmapData); + free(colSum); + free(rowSum); + + CGContextRelease(contextRef); + + return crop; +} + +- (UIImage *)imageByTrimmingWhitePixelsWithOpacity:(UInt8)tolerance +{ + if (self.size.height < 2 || self.size.width < 2) { + + return self; + + } + + CGRect rect = CGRectMake(0, 0, self.size.width * self.scale, self.size.height * self.scale); + UIEdgeInsets crop = [self transparencyInsetsByCuttingWhitespace:tolerance]; + + UIImage *img = self; + + if (crop.top == 0 && crop.bottom == 0 && crop.left == 0 && crop.right == 0) { + + // No cropping needed + + } else { + + // Calculate new crop bounds + rect.origin.x += crop.left; + rect.origin.y += crop.top; + rect.size.width -= crop.left + crop.right; + rect.size.height -= crop.top + crop.bottom; + + // Crop it + CGImageRef newImage = CGImageCreateWithImageInRect([self CGImage], rect); + + // Convert back to UIImage + img = [UIImage imageWithCGImage:newImage scale:self.scale orientation:self.imageOrientation]; + + CGImageRelease(newImage); + } + + return img; +} + @end diff --git a/Transparency Trim Demo/Transparency Trim Demo/demo_white_image.png b/Transparency Trim Demo/Transparency Trim Demo/demo_white_image.png new file mode 100755 index 0000000000000000000000000000000000000000..162f0cf7d958f3ae51d63ee0c69df04781a9bd2b GIT binary patch literal 13890 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 QHUIzs07*qoM6N<$g6(6T%>V!Z literal 0 HcmV?d00001 diff --git a/Transparency Trim Demo/Transparency Trim Demo/demo_white_image@2x.png b/Transparency Trim Demo/Transparency Trim Demo/demo_white_image@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..038638870ce6990c821c44dfb83ca000e36dd0a5 GIT binary patch literal 49322 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 Hr<3c3YMVt+*Uw!+Mq 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

1-uL$x;u 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�`JHZICf#tHDM09(3BR+MMD{= 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 D>_?_1 literal 0 HcmV?d00001 diff --git a/Transparency Trim Demo/Transparency Trim Demo/en.lproj/ELCViewController.xib b/Transparency Trim Demo/Transparency Trim Demo/en.lproj/ELCViewController.xib index 4913a34..557dc74 100644 --- a/Transparency Trim Demo/Transparency Trim Demo/en.lproj/ELCViewController.xib +++ b/Transparency Trim Demo/Transparency Trim Demo/en.lproj/ELCViewController.xib @@ -3,12 +3,12 @@ 1552 12E55 - 3084 + 4514 1187.39 626.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 + 3747 IBNSLayoutConstraint @@ -43,6 +43,7 @@ {{180, 20}, {120, 120}} + _NS:9 4 NO @@ -54,6 +55,7 @@ {{180, 214}, {120, 120}} + _NS:9 4 NO @@ -65,6 +67,7 @@ {{180, 408}, {120, 120}} + _NS:9 4 NO @@ -76,6 +79,7 @@ {{20, 69}, {152, 21}} + _NS:9 NO YES @@ -95,8 +99,8 @@ 1 17 - - Helvetica + + HelveticaNeue 17 16 @@ -108,6 +112,7 @@ {{20, 457}, {152, 21}} + _NS:9 NO YES @@ -120,7 +125,7 @@ 0 2 - + NO @@ -129,6 +134,7 @@ {{20, 263}, {152, 21}} + _NS:9 NO YES @@ -141,13 +147,14 @@ 0 2 - + NO {{0, 20}, {320, 548}} + 3 MC43NQA @@ -171,7 +178,7 @@ IBCocoaTouchFramework - Retina 4 Full Screen + Retina 4-inch Full Screen 2 IBCocoaTouchFramework @@ -247,9 +254,10 @@ 1000 - 8 + 0 29 3 + NO @@ -266,6 +274,7 @@ 3 9 3 + NO @@ -282,6 +291,7 @@ 6 24 3 + NO @@ -295,9 +305,10 @@ 1000 - 8 + 0 29 3 + NO @@ -314,6 +325,7 @@ 6 24 2 + NO @@ -327,9 +339,10 @@ 1000 - 8 + 0 29 3 + NO @@ -346,6 +359,7 @@ 6 24 3 + NO @@ -359,9 +373,10 @@ 1000 - 8 + 0 29 3 + NO @@ -378,6 +393,7 @@ 5 22 2 + NO @@ -391,9 +407,10 @@ 1000 - 8 + 0 29 3 + NO @@ -410,6 +427,7 @@ 3 9 3 + NO @@ -426,6 +444,7 @@ 6 24 3 + NO @@ -439,9 +458,10 @@ 1000 - 8 + 0 29 3 + NO @@ -458,6 +478,7 @@ 6 24 2 + NO @@ -471,9 +492,10 @@ 1000 - 8 + 0 29 3 + NO @@ -490,6 +512,7 @@ 3 9 3 + NO @@ -503,9 +526,10 @@ 1000 - 8 + 0 29 3 + NO @@ -535,6 +559,7 @@ 3 9 1 + NO @@ -551,6 +576,7 @@ 3 9 1 + NO @@ -574,6 +600,7 @@ 3 9 1 + NO @@ -597,6 +624,7 @@ 3 9 1 + NO @@ -841,9 +869,18 @@ 0 IBCocoaTouchFramework + YES + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + YES 3 YES - 2083 + 3747 diff --git a/Transparency Trim Demo/Transparency Trim Demo/en.lproj/ELCWhiteViewController.xib b/Transparency Trim Demo/Transparency Trim Demo/en.lproj/ELCWhiteViewController.xib new file mode 100644 index 0000000..df20f88 --- /dev/null +++ b/Transparency Trim Demo/Transparency Trim Demo/en.lproj/ELCWhiteViewController.xib @@ -0,0 +1,839 @@ + + + + 1552 + 12E55 + 4514 + 1187.39 + 626.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 3747 + + + IBNSLayoutConstraint + IBProxyObject + IBUIImageView + IBUILabel + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 274 + {{180, 20}, {120, 120}} + + + _NS:9 + 4 + NO + IBCocoaTouchFramework + + + + 274 + {{180, 214}, {120, 120}} + + + _NS:9 + 4 + NO + IBCocoaTouchFramework + + + + 274 + {{180, 408}, {120, 120}} + + _NS:9 + 4 + NO + IBCocoaTouchFramework + + + + 292 + {{20, 69}, {152, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Tolerance 24 + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 2 + + 1 + 17 + + + HelveticaNeue + 17 + 16 + + NO + + + + 292 + {{20, 457}, {152, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Tolerance 64 + + + 0 + 2 + + + NO + + + + 292 + {{20, 263}, {152, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Original + + + 0 + 2 + + + NO + + + {{0, 20}, {320, 548}} + + + 3 + MC43NQA + + 2 + + + NO + + + IBUIScreenMetrics + + YES + + + + + + {320, 568} + {568, 320} + + + IBCocoaTouchFramework + Retina 4-inch Full Screen + 2 + + IBCocoaTouchFramework + + + + + + + view + + + + 7 + + + + semiTransparentImageView + + + + 18 + + + + originalImageView + + + + 19 + + + + fullyOpaqueImageView + + + + 20 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 6 + + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 0 + 29 + 3 + NO + + + + 4 + 0 + + 4 + 1 + + 70 + + 1000 + + 3 + 9 + 3 + NO + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + NO + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 0 + 29 + 3 + NO + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + NO + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 0 + 29 + 3 + NO + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + NO + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 0 + 29 + 3 + NO + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 5 + 22 + 2 + NO + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 0 + 29 + 3 + NO + + + + 3 + 0 + + 3 + 1 + + 263 + + 1000 + + 3 + 9 + 3 + NO + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + NO + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 0 + 29 + 3 + NO + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + NO + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 0 + 29 + 3 + NO + + + + 3 + 0 + + 3 + 1 + + 69 + + 1000 + + 3 + 9 + 3 + NO + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 0 + 29 + 3 + NO + + + + + + + + + + + + 8 + + + + + 8 + 0 + + 0 + 1 + + 120 + + 1000 + + 3 + 9 + 1 + NO + + + + 7 + 0 + + 0 + 1 + + 120 + + 1000 + + 3 + 9 + 1 + NO + + + + + + 13 + + + + + 8 + 0 + + 0 + 1 + + 120 + + 1000 + + 3 + 9 + 1 + NO + + + + + + 14 + + + + + 8 + 0 + + 0 + 1 + + 120 + + 1000 + + 3 + 9 + 1 + NO + + + + + + 15 + + + + + 16 + + + + + + 17 + + + + + + 22 + + + + + 23 + + + + + 40 + + + + + 42 + + + + + 61 + + + + + 69 + + + + + 72 + + + + + 73 + + + + + 74 + + + + + 76 + + + + + 79 + + + + + 81 + + + + + 88 + + + + + 89 + + + + + 91 + + + + + 93 + + + + + 97 + + + + + 98 + + + + + 99 + + + + + 100 + + + + + 101 + + + + + + + ELCWhiteViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + + + + + + + + + + + + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 101 + + + 0 + IBCocoaTouchFramework + YES + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + YES + 3747 + + From 80f81f2e038a7267fe80351b1a3a9e417bfff320 Mon Sep 17 00:00:00 2001 From: Blazej Stanek Date: Fri, 28 Feb 2014 21:15:25 +0100 Subject: [PATCH 2/2] readme --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 17042a8..ca67f6a 100644 --- a/README.md +++ b/README.md @@ -19,4 +19,11 @@ Additionally, if you merely desire to know the `UIEdgeInsets` of the transparenc `[yourImage transparencyInsetsRequiringFullOpacity:YES];` -This call works based on the same principles as the "advanced" trim method, with the boolean dictating whether non-opaque pixels should be considered transparent. \ No newline at end of file +This call works based on the same principles as the "advanced" trim method, with the boolean dictating whether non-opaque pixels should be considered transparent. + + +This fork adds support for trimming white area around image with given tolerance + +`[yourImage imageByTrimmingWhitePixelsWithOpacity:VALUE];` + +where 0 - cut only white, 255 - remove everything \ No newline at end of file