把图片切成小片(IOS)
by 伍雪颖
#import
<Foundation/Foundation.h>
#import
<AppKit/AppKit.h>
int
main(int
argc, const
char * argv[]) {
@autoreleasepool
{
if
(argc < 2) {
return
0;
}
NSString
*inputFile = [NSString
stringWithCString:argv[1]
encoding:NSUTF8StringEncoding];
CGFloat
titleSize =
256;
NSString
*outputPath = [inputFile
stringByDeletingPathExtension];
NSImage
*image = [[NSImage
alloc]
initWithContentsOfFile:inputFile];
NSSize
size = [image
size];
NSArray
*representations = [image
representations];
if
([representations count]) {
NSBitmapImageRep
*representation = representations[0];
size.width
= [representation
pixelsWide];
size.height
= [representation
pixelsHigh];
}
NSRect
rect =
NSMakeRect(0,
0, size.width, size.height);
CGImageRef
imageRef = [image
CGImageForProposedRect:&rect
context:NULL
hints:nil];
NSInteger
rows =
ceil(size.height/titleSize);
NSInteger
cols =
ceil(size.width/titleSize);
for
(int
y =0;y<rows;++y) {
for
(int
x=0;x<cols;++x) {
CGRect
titleRect =
CGRectMake(x*titleSize, y*titleSize, titleSize, titleSize);
CGImageRef
titleImage =
CGImageCreateWithImageInRect(imageRef, titleRect);
NSBitmapImageRep
*imageRep = [[NSBitmapImageRep
alloc]
initWithCGImage:titleImage];
NSData
*data = [imageRep
representationUsingType:NSJPEGFileType
properties:nil];
CGImageRelease(titleImage);
NSString
*path = [outputPath
stringByAppendingFormat:@"_%02i_%02i.jpg",x,y];
[data
writeToFile:path
atomically:NO];
}
}
}
return
0;
}
终端运行:
./CutImageAPP 1.jpg