Используя Nativescript + Angular, мы разрабатываем мобильное приложение, которое позволяет пользователям делать фотографии, а затем загружать фотографии на сервер. У этого приложения есть особые требования к соотношению сторон фотографий, поэтому мы пытаемся использовать API урожая () в плагине nativescript-bitmap-factory (часть nativescript-toolbox), чтобы обрезать фотографию после ее захвата. Это отлично работало на Android, но не работало на iOS с этой ошибкой: Отклонение необработанного обещания: метод ImageSource.setNativeSource() ожидает экземпляр UIImage. Вот фрагмент кода:
import * as BitmapFactory from "nativescript-bitmap-factory";
public cropImage(image : ImageSource) : ImageSource {
let mutable = BitmapFactory.makeMutable(image);
return BitmapFactory.asBitmap(mutable).dispose((bmp) => {
let croppedImage = bmp.crop({x:10,y:10}, {width:300,height:300});
console.log("Image cropped!")
return croppedImage.toImageSource();
});
}
Ошибка была выброшена в последней строке
croppedImage.toImageSource();
Я изучил код nativescript-bitmap-factory и понял, что API урожая () возвращает экземпляр CGImage (вместо UIImage, ожидаемого ImageSource). Согласно этой статье https://medium.com/@ranleung/uiimage-vs-ciimage-vs-cgimage-3db9d8b83d94 довольно просто преобразовать CGImage в UIImage в target-c. Я уже несколько дней пытаюсь понять, как преобразовать CGImage в UIImage в области Nativescript. Я сообщил об ошибке в наборе инструментов nativescript (см. https://github.com/mkloubert/nativescript-toolbox/issues/10) пару недель назад, но ответа не было. Могут ли эксперты Nativescript поделиться мыслями или советами о том, как это можно сделать? Разумно ли просить, чтобы Nativescript ImageSource был улучшен для поддержки CGImage?