Мне нужно преобразовать файл PNG в данные Base64, чтобы я мог добавить его в объект JSON, используя JXA (сценарии приложения JavaScript).
JXA ограничен по сравнению с обычным JavaScript, поэтому я не могунемедленно используйте функции из FileReader и т. д.
Из того, что я прочитал, я не знаю, как это сделать без использования Objective-C / Cocoa (который я только началчитая сегодня об этой задаче).
Я нашел следующий код в другом сообщении :
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];
Я считаю, что это имеет отношение к тому, что я пытаюсь сделать- Кто-нибудь знает, как я могу соединить этот метод, чтобы использовать его в JXA?
Я читал в разделе Поваренная книга JXA на Синтаксис для вызова функций ObjC ,но мне трудно это понять ... это все, что я до сих пор придумал:
var desktopString = app.pathTo("desktop").toString()
var file = `${desktopString}/test.png`
ObjC.import("Cocoa");
var image = $.NSImage.alloc.initWithContentsOfFile(file)
var imageRep = $.NSBitmapImageRep.alloc.initWithData(image)
Но я не знаю, как поступить - меня сбивает с толку:
- Весь начальный NSArray / NSDictionary part
- TIFFПредставление (оно мне нужно?Куда мне его поместить?)
- NSData * tiff_data = [imageRep presentationUsingType: NSPNGFileType properties: dictionary]; (Нет ассигнований! Зачем нужен словарь?)
- NSString * base64 = [tiff_data encodeBase64WithNewlines: NO]; (Опять же, без выделения.)
Я был бы очень признателен, если бы кто-то мог указать мне правильное направление / дать мненесколько советов о том, как мне добиться того, что я пытаюсь сделать.
Заранее спасибо!