有没有办法调整NSBitmapImageRep
的大小?
我找到了方法setPixel:atX:y:
,但我不确定它在做什么。 Maby这是我需要的吗?
如果不是,那我该怎么办呢?
我需要在将图像写入文件之前调整图像大小,我的图像会显示在NSBitmapImageRep
中。如果更容易调整大小,我可以将其转换为NSImage
或CIImage
。如果是,那就告诉我。
顺便说一句,我需要能够在不保持任何比例的情况下调整图像大小。例如,如果图像是3200x2000
,我需要能够将其大小调整为100x100
大小。我该怎么办?
答案 0 :(得分:0)
您应该使用正确插入源的实现。
您可以使用CGBitmapContext
目标尺寸(例如3200x3200)和规格来完成此操作,然后将源图像图像绘制到CGBitmapContext
。然后,您可以使用CGBitmapContext的图像创建功能,也可以使用上下文的位图缓冲区作为输出样本。
答案 1 :(得分:0)
编辑您可以使用以下功能调整图片大小而不保持任何比例:
- (NSImage *)imageResize:(NSImage*)anImage
newSize:(NSSize)newSize
{
NSImage *sourceImage = anImage;
[sourceImage setScalesWhenResized:YES];
// Report an error if the source isn't a valid image
if (![sourceImage isValid])
{
NSLog(@"Invalid Image");
} else
{
NSImage *smallImage = [[[NSImage alloc] initWithSize: newSize] autorelease];
[smallImage lockFocus];
[sourceImage setSize: newSize];
[[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationHigh];
[sourceImage compositeToPoint:NSZeroPoint operation:NSCompositeCopy];
[smallImage unlockFocus];
return smallImage;
}
return nil;
}
其次是这样保持比例:
NSData *imageData = [yourImg TIFFRepresentation]; // converting img into data
NSBitmapImageRep *imageRep = [NSBitmapImageRep imageRepWithData:imageData]; // converting into BitmapImageRep
NSDictionary *imageProps = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:0.9] forKey:NSImageCompressionFactor]; // any number betwwen 0 to 1
imageData = [imageRep representationUsingType:NSJPEGFileType properties:imageProps]; // use NSPNGFileType if needed
NSImage *resizedImage = [[NSImage alloc] initWithData:imageData]; // image created from data