我正在生成图像,并且可以成功地将其保存到文件中。
urlRef = (CFURLRef)[NSURL fileURLWithPath: filePath];
imgDestRef = CGImageDestinationCreateWithURL(urlRef,
kUTTypeJPEG,
1,
NULL);
/* ... */
CGImageDestinationFinalize(imgDestRef);
现在我需要将生成的图像发送到标准输出,而不是将其写入文件。
我尝试将filePath设置为/dev/stdout但 CGImageDestinationCreateWithURL 失败。
-
其他选项是写入内存,然后读取数据并写入标准输出,这样:
jpgDataRef = CFDataCreateMutable(NULL, 0);
imgDestinationRef = CGImageDestinationCreateWithData(jpgDataRef,
kUTTypeJPEG,
1,
NULL);
/* ... */
CGImageDestinationFinalize(imgDestRef); /* STEP 1 */
NSFileHandle *stdoutFH = [NSFileHandle fileHandleWithStandardOutput]; /* STEP 2 */
[stdoutFH writeData:(NSData *)jpgDataRef];
但我更喜欢一步法,使用CGImageDestinationFinalize直接写入标准输出(假设采用这种方式会更快或占用更少的内存)。