可可 – 对Base64的NSImage

可可 – 对Base64的NSImage,第1张

概述我需要创建一个NS Image可可对象的base64字符串表示.处理这个问题的最佳方法是什么,苹果文档似乎有点简短(或者我找不到). Base64编码从外部看起来相当复杂. 任何帮助将非常感谢. 干杯 亚历克斯 编辑 NSArray *keys = [NSArray arrayWithObject:@"NSImageCompressionFactor"];NSArray *objects = [ 我需要创建一个NS Image可可对象的base64字符串表示.处理这个问题的最佳方法是什么,苹果文档似乎有点简短(或者我找不到). Base64编码从外部看起来相当复杂.

任何帮助将非常感谢.

干杯
亚历克斯

编辑

NSArray *keys = [NSArray arrayWithObject:@"NSImageCompressionFactor"];NSArray *objects = [NSArray arrayWithObject:@"1.0"];NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];NSImage *image = [[NSImage alloc] initWithContentsOffile:[imageFIEld stringValue]];NSBitmAPImageRep *imageRep = [[NSBitmAPImageRep alloc] initWithData:[image TIFFRepresentation]];NSData *tiff_data = [imageRep representationUsingType:NSPNGfileType propertIEs:dictionary];Nsstring *base64 = [tiff_data encodeBase64WithNewlines:NO];
解决方法 NSImage是一个非常抽象的对象. NSImage并不关心它是光栅图像还是矢量图像; NSImage对象甚至可以同时具有栅格,矢量甚至编程表示 – 这就是一般情况.

在生成Base64数据之前,您必须确定要编码的内容.

第一步是决定是否要对栅格或矢量进行编码.前者很简单,我猜它可能就是你的意思.但是,NSImage可能来自矢量源,例如pdf文档.

如果您知道从光栅源创建了图像,则只需编码该源数据即可.

如果它来自矢量源,你仍然可以编码,如果你知道解码端的应用程序将能够处理它(例如,如果它是另一个Cocoa或Cocoa touch应用程序).另一方面,如果解码端的应用程序可能无法处理矢量数据,那么您应该避免这种策略.

在所有情况下都适用的一种解决方案是使用图像的NSBitmapImageRep到create a raster capture.将焦点锁定在图像上,然后使用该方法创建NSBitmAPImageRep,然后解锁焦点.然后,使用representationUsingType:properties:生成图像的PNG(或任何适当的格式)数据.然后Base64编码PNG(或任何格式)数据.

总结

以上是内存溢出为你收集整理的可可 – 对Base64的NSImage全部内容,希望文章能够帮你解决可可 – 对Base64的NSImage所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1018205.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存