Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.
Merged
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
c21de5c
Make it possible to pass bytes
bparrishMines Oct 25, 2018
671b66c
Add metadata for images
bparrishMines Oct 26, 2018
956d20f
Change tests to reflect metadata
bparrishMines Oct 26, 2018
f1ccefa
Android side of byte images
bparrishMines Oct 26, 2018
09075d0
Change error string to image type
bparrishMines Oct 29, 2018
4c9c428
Use int as rotation
bparrishMines Oct 31, 2018
7def42f
Send int of rotation
bparrishMines Oct 31, 2018
d712e4f
Assertions for metadata
bparrishMines Oct 31, 2018
eb1e94f
Merge branch 'master' of github.com:flutter/plugins into mlkit_android
bparrishMines Nov 15, 2018
35ca899
Add ios implementation to take bytes
bparrishMines Nov 16, 2018
a94fdd3
Create UIImage for mlkit
bparrishMines Nov 16, 2018
26c77ae
fomatting
bparrishMines Nov 16, 2018
9aca7df
Merge branch 'master' of github.com:flutter/plugins into mlkit_android
bparrishMines Nov 16, 2018
eb2c5f6
Make single code place for creating image
bparrishMines Nov 16, 2018
3552446
Add error for wrong type
bparrishMines Nov 16, 2018
c5a2ca8
Add ios orientation
bparrishMines Nov 16, 2018
3671e81
Add TODOs and testing
bparrishMines Nov 17, 2018
724c181
Remove orientation
bparrishMines Nov 17, 2018
31b011c
Image documentation
bparrishMines Nov 17, 2018
30e3e31
version bump
bparrishMines Nov 17, 2018
857b303
formatting
bparrishMines Nov 17, 2018
c5e4894
Documentation
bparrishMines Nov 18, 2018
10e81e2
Switch statement for ImageRotation
bparrishMines Nov 18, 2018
8081a83
formatting
bparrishMines Nov 18, 2018
b139e08
Change default rotation to zero
bparrishMines Nov 26, 2018
d4ce4a0
Take yuv format instead
bparrishMines Nov 28, 2018
5ff2661
Add plane metadata
bparrishMines Dec 6, 2018
75b353c
Update test
bparrishMines Dec 6, 2018
46bf582
Setup iOS side of creating buffer
bparrishMines Dec 7, 2018
e7df772
Documentation
bparrishMines Dec 7, 2018
c18cd9c
Merge branch 'master' of github.com:flutter/plugins into mlkit_android_2
bparrishMines Dec 7, 2018
b513d12
Formatting
bparrishMines Dec 7, 2018
d14aa17
Only assert on iOS
bparrishMines Dec 7, 2018
e07ce35
Keep access to bytes
bparrishMines Dec 10, 2018
db798e7
formatting
bparrishMines Dec 10, 2018
11bf101
Use UIImage instead of CMSampleBufferRef
bparrishMines Dec 12, 2018
f71e279
Formatting
bparrishMines Dec 12, 2018
deca0b5
Style guide enums
bparrishMines Dec 20, 2018
d36c63a
Merge branch 'master' of github.com:flutter/plugins into mlkit_android_2
bparrishMines Jan 3, 2019
1a9ac52
Merge branch 'master' of github.com:flutter/plugins into mlkit_android_2
bparrishMines Jan 3, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add ios implementation to take bytes
  • Loading branch information
bparrishMines committed Nov 16, 2018
commit 35ca899d36ce5d75e404547582c4df40acfb9e5d
36 changes: 32 additions & 4 deletions packages/firebase_ml_vision/ios/Classes/FirebaseMlVisionPlugin.m
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ - (instancetype)init {
}

- (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result {
FIRVisionImage *image = [self filePathToVisionImage:call.arguments[@"path"]];
FIRVisionImage *image = [self dataToVisionImage:call.arguments];
NSDictionary *options = call.arguments[@"options"];
if ([@"BarcodeDetector#detectInImage" isEqualToString:call.method]) {
[BarcodeDetector handleDetection:image options:options result:result];
Expand All @@ -53,8 +53,36 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result
}
}

- (FIRVisionImage *)filePathToVisionImage:(NSString *)path {
UIImage *image = [UIImage imageWithContentsOfFile:path];
return [[FIRVisionImage alloc] initWithImage:image];
- (FIRVisionImage *)dataToVisionImage:(NSDictionary *)imageData {
NSString *imageType = imageData[@"type"];

if ([@"file" isEqualToString:imageType]) {
UIImage *image = [UIImage imageWithContentsOfFile:imageData[@"path"]];
return [[FIRVisionImage alloc] initWithImage:image];
} else if ([@"bytes" isEqualToString:imageType]) {
FlutterStandardTypedData *byteData = imageData[@"bytes"];
NSData *imageData = byteData.data;

CVPixelBufferRef pixelBuffer = NULL;
CVPixelBufferCreateWithBytes(NULL, 1080, 1920, kCVPixelFormatType_32BGRA, (void *) imageData.bytes, 4352, NULL, NULL, NULL, &pixelBuffer);

CMVideoFormatDescriptionRef description = NULL;
CMVideoFormatDescriptionCreateForImageBuffer(NULL, pixelBuffer, &description);

CMSampleTimingInfo timingInfo;
timingInfo.decodeTimeStamp = kCMTimeZero;
timingInfo.duration = kCMTimeInvalid;
timingInfo.presentationTimeStamp = kCMTimeInvalid;

CMSampleBufferRef samplebuffer = NULL;
CMSampleBufferCreateReadyWithImageBuffer(kCFAllocatorDefault, pixelBuffer, description, &timingInfo, &samplebuffer);

FIRVisionImage *image = [[FIRVisionImage alloc] initWithBuffer:samplebuffer];
return image;
} else {
// TODO(bmparr): Throw illegal argument exception
}

return nil;
}
@end