2

有没有办法调整大小NSBitmapImageRep

我找到了方法setPixel:atX:y:,但我不确定它在做什么。也许这是我需要的?

如果没有,那我该怎么做?

我需要在将图像写入文件之前调整图像大小,并且我的图像进入NSBitmapImageRep. 当然,我可以将其转换为NSImage或者CIImage是否更容易调整大小。如果是,那么请告诉我。

顺便说一句,我需要能够在不保持任何比例的情况下调整图像大小。例如,如果 image 是3200x2000,我需要能够将其调整为 size 100x100。我该怎么做?

4

2 回答 2

0

您应该使用正确插入源的实现。

您可以使用CGBitmapContext目标尺寸(例如 3200x3200)和规格来完成此操作,然后将源图像图像绘制到CGBitmapContext. 然后,您可以使用 CGBitmapContext 的图像创建函数,或使用上下文的位图缓冲区作为输出样本。

于 2012-08-21T08:13:54.347 回答
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
于 2012-08-21T08:28:52.840 回答