|
|
@@ -105,6 +105,9 @@
|
|
|
float v = [params[@"volume"] floatValue] / 100;
|
|
|
controller.playbackVolume = v;
|
|
|
result(@(YES));
|
|
|
+ } else if ([@"screenShot" isEqualToString:call.method]) {
|
|
|
+ NSData *data = [self screenShot];
|
|
|
+ result(data);
|
|
|
} else {
|
|
|
result(FlutterMethodNotImplemented);
|
|
|
}
|
|
|
@@ -296,4 +299,28 @@
|
|
|
return mDegree;
|
|
|
}
|
|
|
|
|
|
+- (NSData*) screenShot{
|
|
|
+ CVPixelBufferRef ref = [self copyPixelBuffer];
|
|
|
+ if(!ref){
|
|
|
+ return nil;
|
|
|
+ }
|
|
|
+
|
|
|
+ UIImage *img = [self convertPixeclBufferToUIImage:ref];
|
|
|
+ return UIImageJPEGRepresentation(img, 1.0);
|
|
|
+}
|
|
|
+
|
|
|
+-(UIImage*)convertPixeclBufferToUIImage:(CVPixelBufferRef)pixelBuffer{
|
|
|
+ CIImage *ciImage = [CIImage imageWithCVPixelBuffer:pixelBuffer];
|
|
|
+
|
|
|
+ CIContext *temporaryContext = [CIContext contextWithOptions:nil];
|
|
|
+ CGImageRef videoImage = [temporaryContext
|
|
|
+ createCGImage:ciImage
|
|
|
+ fromRect:CGRectMake(0, 0, CVPixelBufferGetWidth(pixelBuffer), CVPixelBufferGetHeight(pixelBuffer))];
|
|
|
+
|
|
|
+ UIImage *uiImage = [UIImage imageWithCGImage:videoImage];
|
|
|
+ CGImageRelease(videoImage);
|
|
|
+
|
|
|
+ return uiImage;
|
|
|
+}
|
|
|
+
|
|
|
@end
|