이 메서드를 작성하여 이미지 크기를 조정하고 파일에 저장했습니다.
- (BOOL) saveImage: (NSImage*) image withSize: (NSSize) size type: (NSBitmapImageFileType) type toURL: (NSURL*) URL {
NSImage* outputImage= [[NSImage alloc]initWithSize: size];
NSBitmapImageRep* bitmap= [[NSBitmapImageRep alloc]initWithBitmapDataPlanes: NULL pixelsWide: size.width pixelsHigh: size.height bitsPerSample:8 samplesPerPixel:4 hasAlpha: type==NSPNGFileType isPlanar: NO colorSpaceName: NSCalibratedRGBColorSpace bytesPerRow:0 bitsPerPixel:0];
[outputImage addRepresentation: bitmap];
[image lockFocusOnRepresentation: bitmap];
[image drawInRect: NSMakeRect(0, 0, size.width, size.height) fromRect: NSZeroRect operation: NSCompositeCopy fraction: 1.0];
[image unlockFocus];
NSDictionary* properties= type==NSJPEGFileType? @{NSImageCompressionFactor : @1.0} : @{};
NSData* outputData= [bitmap representationUsingType: type properties: properties];
return [outputData writeToURL: URL atomically: YES];
}
이렇게하면 크기가 조정 된 비트 맵 내부에 이미지가 그려 져야하며 크기가 조정됩니다. 이 방법을 사용하여 이미지 크기를 조정하고 저장하면 올바른 크기의 파일을 얻지 만 빈 이미지입니다. 이 코드에 어떤 문제가 있습니까?
- (BOOL) saveImage:(NSImage*)image
withSize:(NSSize) size
type:(NSBitmapImageFileType) type
toURL:(NSURL*) URL
{
NSImage *smallImage = [[NSImage alloc] initWithSize:size];
[smallImage lockFocus];
[image setSize:size];
[[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationHigh];
[image drawAtPoint:NSZeroPoint fromRect:CGRectMake(0, 0, size.width, size.height) operation:NSCompositeCopy fraction:1.0];
[smallImage unlockFocus];
NSData *outputData= [smallImage TIFFRepresentation];
NSBitmapImageRep *imageRep = [NSBitmapImageRep imageRepWithData:outputData];
NSDictionary *imageProps = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:0.9] forKey:NSImageCompressionFactor];
outputData = [imageRep representationUsingType:NSPNGFileType properties:imageProps];
return [outputData writeToURL:URL atomically:YES];
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다