Как я могу сохранить изображение на Ma c из приложения iOS? - PullRequest
0 голосов
/ 29 апреля 2020

Я делаю приложение для MacOS, начиная с IOSapp. В приложении iOS скриншот сначала создается, а затем сохраняется следующим способом:

void Bridge::SaveScreenshot(unsigned char * img, ssize_t size, int width, int height) {

  CGColorSpaceRef colorSpace  = CGColorSpaceCreateDeviceRGB();
  CGContextRef ctx = CGBitmapContextCreate(img,
                                       width,
                                       height,
                                       8,
                                       width * 4,
                                       colorSpace,
                                       kCGImageAlphaPremultipliedLast );

 CGImageRef imageRef = CGBitmapContextCreateImage (ctx);
 UIImage* rawImage = [UIImage imageWithCGImage:imageRef];
 CGImageRelease(imageRef);

 UIImageWriteToSavedPhotosAlbum(rawImage, nil, nil, nil);

CGColorSpaceRelease(colorSpace);
CGContextRelease(ctx);

Строки, которые вызывают ошибку:

UIImage* rawImage = [UIImage imageWithCGImage:imageRef];
...
UIImageWriteToSavedPhotosAlbum(rawImage, nil, nil, nil);

Я не знаю Как изменить его, чтобы сохранить изображение на Ма c. Может кто-нибудь сказать мне, как их изменить или что я должен использовать, чтобы сохранить изображения на компьютере из приложения MacOS? Спасибо за чтение и, если вы хотите ответить.

1 Ответ

0 голосов
/ 29 апреля 2020

В MacOs изображение сохраняется как NSImage. Итак, вы преобразовали UImage в NSData, затем NSData в NSImage и сохранили следующим образом.

extension NSImage {
    func writeToFile(file: String, automatically: Bool, usingType type: NSBitmapImageFileType) -> Bool {
    let properties = [NSImageCompressionFactor: 1.0]
    guard
        let imageData = TIFFRepresentation,
        imageRep = NSBitmapImageRep(data: imageData),
        fileData = imageRep.representationUsingType(type, properties: properties) else {
            return false
    }
    return fileData.writeToFile(file, atomically: atomically)
}

Использование:

   let yourFilePath = ...path to save
   yourImage.writeToFile(yourFilePath, automatically: true, usingType: .NSPNGFileType) // as png
   yourImage.writeToFile(yourFilePath, automatically: true, usingType: .NSJPEGFileType) // as jpg
...