在 Cocoa 中,保存图像时出错
In Cocoa get an error saving an image
缩放后我使用此代码保存图片:
NSData *dataToWrite = [rep representationUsingType:NSPNGFileType properties:nil];
[dataToWrite writeToFile:finalPath atomically:NO];
它工作正常,但现在使用新的 Xcode 我收到警告:
Null passed to a callee that requires a non-null argument
我应该在属性中输入什么而不是 nil?
非常感谢您的帮助
您需要传递一个 NSDictionary
,并在 NSBitmapImageRep.h
中找到可能的字典键(不过您可以传递一个空字典)
APPKIT_EXTERN NSString* NSImageCompressionMethod; // TIFF input/output (NSTIFFCompression in NSNumber)
APPKIT_EXTERN NSString* NSImageCompressionFactor; // TIFF/JPEG input/output (float in NSNumber)
APPKIT_EXTERN NSString* NSImageDitherTransparency; // GIF output (BOOL in NSNumber)
APPKIT_EXTERN NSString* NSImageRGBColorTable; // GIF input/output (packed RGB in NSData)
APPKIT_EXTERN NSString* NSImageInterlaced; // PNG output (BOOL in NSNumber)
APPKIT_EXTERN NSString* NSImageColorSyncProfileData; // TIFF,GIF input/output (NSData)
APPKIT_EXTERN NSString* NSImageFrameCount; // GIF input (int in NSNumber) (read-only)
APPKIT_EXTERN NSString* NSImageCurrentFrame; // GIF input (int in NSNumber)
APPKIT_EXTERN NSString* NSImageCurrentFrameDuration; // GIF input (float in NSNumber) (read-only)
APPKIT_EXTERN NSString* NSImageLoopCount ; // GIF input (int in NSNumber) (read-only)
APPKIT_EXTERN NSString* NSImageGamma ; // PNG input/output (float in NSNumber)
APPKIT_EXTERN NSString* NSImageProgressive ; // JPEG input/output (BOOL in NSNumber)
APPKIT_EXTERN NSString* NSImageEXIFData ; // JPEG input/output (NSDictionary)
APPKIT_EXTERN NSString* NSImageFallbackBackgroundColor NS_AVAILABLE_MAC(10_5); // JPEG output (NSColor)
对于遇到同样问题的人,我解决了创建这个 NSDictionary 的问题:
NSDictionary * dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithFloat:0.5] forKey:NSImageCompressionFactor];
并在属性中放置 "dict" 而不是 nil。
缩放后我使用此代码保存图片:
NSData *dataToWrite = [rep representationUsingType:NSPNGFileType properties:nil];
[dataToWrite writeToFile:finalPath atomically:NO];
它工作正常,但现在使用新的 Xcode 我收到警告:
Null passed to a callee that requires a non-null argument
我应该在属性中输入什么而不是 nil?
非常感谢您的帮助
您需要传递一个 NSDictionary
,并在 NSBitmapImageRep.h
中找到可能的字典键(不过您可以传递一个空字典)
APPKIT_EXTERN NSString* NSImageCompressionMethod; // TIFF input/output (NSTIFFCompression in NSNumber)
APPKIT_EXTERN NSString* NSImageCompressionFactor; // TIFF/JPEG input/output (float in NSNumber)
APPKIT_EXTERN NSString* NSImageDitherTransparency; // GIF output (BOOL in NSNumber)
APPKIT_EXTERN NSString* NSImageRGBColorTable; // GIF input/output (packed RGB in NSData)
APPKIT_EXTERN NSString* NSImageInterlaced; // PNG output (BOOL in NSNumber)
APPKIT_EXTERN NSString* NSImageColorSyncProfileData; // TIFF,GIF input/output (NSData)
APPKIT_EXTERN NSString* NSImageFrameCount; // GIF input (int in NSNumber) (read-only)
APPKIT_EXTERN NSString* NSImageCurrentFrame; // GIF input (int in NSNumber)
APPKIT_EXTERN NSString* NSImageCurrentFrameDuration; // GIF input (float in NSNumber) (read-only)
APPKIT_EXTERN NSString* NSImageLoopCount ; // GIF input (int in NSNumber) (read-only)
APPKIT_EXTERN NSString* NSImageGamma ; // PNG input/output (float in NSNumber)
APPKIT_EXTERN NSString* NSImageProgressive ; // JPEG input/output (BOOL in NSNumber)
APPKIT_EXTERN NSString* NSImageEXIFData ; // JPEG input/output (NSDictionary)
APPKIT_EXTERN NSString* NSImageFallbackBackgroundColor NS_AVAILABLE_MAC(10_5); // JPEG output (NSColor)
对于遇到同样问题的人,我解决了创建这个 NSDictionary 的问题:
NSDictionary * dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithFloat:0.5] forKey:NSImageCompressionFactor];
并在属性中放置 "dict" 而不是 nil。