NSImage - очень абстрактный объект. NSImage действительно не волнует, является ли это растровым изображением или векторным изображением; объект NSImage может даже иметь растровые, векторные, и даже программные представления одновременно - это общее.
Прежде чем вы сможете сгенерировать данные Base64, вы должны решить что вы хотите кодировать.
Первый шаг - решить, хотите ли вы кодировать растр или векторы. Первое довольно легко, и я думаю, это, вероятно, то, что вы имели в виду. Однако NSImage мог быть получен из векторного источника, такого как документ PDF.
Если вы знаете, что создали изображение из растрового источника, вы можете просто закодировать эти исходные данные.
Если оно получено из векторного источника, вы все равно можете просто закодировать его, если знаете, что приложение на стороне декодирования сможет его обработать (например, если это другое приложение Cocoa или Cocoa Touch). С другой стороны, если приложение на стороне декодирования может не обрабатывать векторные данные, вам следует избегать этой тактики.
Единственное решение, которое работает во всех случаях , заключается в использовании NSBitmapImageRep до для создания растрового захвата изображения. Заблокируйте фокус на изображении, затем создайте NSBitmapImageRep, используя этот метод, затем разблокируйте фокус. Затем используйте presentationUsingType: properties: , чтобы сгенерировать данные PNG (или любой другой формат) для изображения. Затем Base64-кодирует данные PNG (или любой другой формат).