thuanpm

fix channel 8bit

@@ -60,7 +60,7 @@ abstract class ProcessingCameraImage { @@ -60,7 +60,7 @@ abstract class ProcessingCameraImage {
60 }); 60 });
61 61
62 /// [processCameraImageToGray8Bit]. for Android with YUV420. 62 /// [processCameraImageToGray8Bit]. for Android with YUV420.
63 - Uint8List? processCameraImageToGray8Bit({ 63 + Image8bit? processCameraImageToGray8Bit({
64 int? width, 64 int? width,
65 int? height, 65 int? height,
66 Uint8List? plane0, 66 Uint8List? plane0,
@@ -70,3 +70,10 @@ abstract class ProcessingCameraImage { @@ -70,3 +70,10 @@ abstract class ProcessingCameraImage {
70 bool isFlipVectical = false, 70 bool isFlipVectical = false,
71 }); 71 });
72 } 72 }
  73 +
  74 +class Image8bit {
  75 + final int width;
  76 + final int heigh;
  77 + final Uint8List data;
  78 + Image8bit({required this.data, required this.heigh, required this.width});
  79 +}
@@ -83,12 +83,10 @@ class IProcessingCameraImage implements ProcessingCameraImage { @@ -83,12 +83,10 @@ class IProcessingCameraImage implements ProcessingCameraImage {
83 int newImgWidth = (sinVal * height + cosVal * bytesPerRowPlane0).toInt(); 83 int newImgWidth = (sinVal * height + cosVal * bytesPerRowPlane0).toInt();
84 int newImgHeight = (sinVal * bytesPerRowPlane0 + cosVal * height).toInt(); 84 int newImgHeight = (sinVal * bytesPerRowPlane0 + cosVal * height).toInt();
85 85
86 - // Allocate memory for the 3 planes of the image  
87 Pointer<Uint8> p = ffi.malloc.allocate(plane0.length); 86 Pointer<Uint8> p = ffi.malloc.allocate(plane0.length);
88 Pointer<Uint8> p1 = ffi.malloc.allocate(plane1.length); 87 Pointer<Uint8> p1 = ffi.malloc.allocate(plane1.length);
89 Pointer<Uint8> p2 = ffi.malloc.allocate(plane2.length); 88 Pointer<Uint8> p2 = ffi.malloc.allocate(plane2.length);
90 89
91 - // Assign the planes data to the pointers of the image  
92 Uint8List pointerList = p.asTypedList(plane0.length); 90 Uint8List pointerList = p.asTypedList(plane0.length);
93 Uint8List pointerList1 = p1.asTypedList(plane1.length); 91 Uint8List pointerList1 = p1.asTypedList(plane1.length);
94 Uint8List pointerList2 = p2.asTypedList(plane2.length); 92 Uint8List pointerList2 = p2.asTypedList(plane2.length);
@@ -96,7 +94,6 @@ class IProcessingCameraImage implements ProcessingCameraImage { @@ -96,7 +94,6 @@ class IProcessingCameraImage implements ProcessingCameraImage {
96 pointerList1.setRange(0, plane1.length, plane1); 94 pointerList1.setRange(0, plane1.length, plane1);
97 pointerList2.setRange(0, plane2.length, plane2); 95 pointerList2.setRange(0, plane2.length, plane2);
98 96
99 - // Call the convertImage function and convert the YUV to RGB  
100 Pointer<Uint32> imgP = _convertImageYuv420pToRGB( 97 Pointer<Uint32> imgP = _convertImageYuv420pToRGB(
101 p, 98 p,
102 p1, 99 p1,
@@ -111,14 +108,10 @@ class IProcessingCameraImage implements ProcessingCameraImage { @@ -111,14 +108,10 @@ class IProcessingCameraImage implements ProcessingCameraImage {
111 isFlipHoriozntal, 108 isFlipHoriozntal,
112 ); 109 );
113 110
114 - // Get the pointer of the data returned from the function to a List  
115 List<int> imgData = imgP.asTypedList(((newImgWidth) * (newImgHeight))); 111 List<int> imgData = imgP.asTypedList(((newImgWidth) * (newImgHeight)));
116 - // Generate image from the converted data  
117 imglib.Image img = 112 imglib.Image img =
118 imglib.Image.fromBytes(newImgWidth, newImgHeight, imgData); 113 imglib.Image.fromBytes(newImgWidth, newImgHeight, imgData);
119 114
120 - // Free the memory space allocated  
121 - // from the planes and the converted data  
122 ffi.malloc.free(p); 115 ffi.malloc.free(p);
123 ffi.malloc.free(p1); 116 ffi.malloc.free(p1);
124 ffi.malloc.free(p2); 117 ffi.malloc.free(p2);
@@ -176,7 +169,7 @@ class IProcessingCameraImage implements ProcessingCameraImage { @@ -176,7 +169,7 @@ class IProcessingCameraImage implements ProcessingCameraImage {
176 169
177 /// [processCameraImageToGray8Bit]. 170 /// [processCameraImageToGray8Bit].
178 @override 171 @override
179 - Uint8List? processCameraImageToGray8Bit({ 172 + Image8bit? processCameraImageToGray8Bit({
180 int? width, 173 int? width,
181 int? height, 174 int? height,
182 Uint8List? plane0, 175 Uint8List? plane0,
@@ -216,13 +209,14 @@ class IProcessingCameraImage implements ProcessingCameraImage { @@ -216,13 +209,14 @@ class IProcessingCameraImage implements ProcessingCameraImage {
216 imglib.Image img = 209 imglib.Image img =
217 imglib.Image.fromBytes(newImgWidth, newImgHeight, imgData); 210 imglib.Image.fromBytes(newImgWidth, newImgHeight, imgData);
218 211
219 - // retData.addAll(imgData);  
220 -  
221 ffi.malloc.free(p); 212 ffi.malloc.free(p);
222 ffi.malloc.free(imgP); 213 ffi.malloc.free(imgP);
223 214
224 - // print(newImgHeight * newImgWidth);  
225 - return img.getBytes(); 215 + return Image8bit(
  216 + data: img.getBytes(),
  217 + heigh: newImgHeight,
  218 + width: newImgWidth,
  219 + );
226 } 220 }
227 221
228 /// [processCameraImageToRGBIOS]. for IOS with YUV420. 222 /// [processCameraImageToRGBIOS]. for IOS with YUV420.
@@ -259,17 +253,14 @@ class IProcessingCameraImage implements ProcessingCameraImage { @@ -259,17 +253,14 @@ class IProcessingCameraImage implements ProcessingCameraImage {
259 int newImgWidth = (sinVal * height + cosVal * bytesPerRowPlane0).toInt(); 253 int newImgWidth = (sinVal * height + cosVal * bytesPerRowPlane0).toInt();
260 int newImgHeight = (sinVal * bytesPerRowPlane0 + cosVal * height).toInt(); 254 int newImgHeight = (sinVal * bytesPerRowPlane0 + cosVal * height).toInt();
261 255
262 - // Allocate memory for the 3 planes of the image  
263 Pointer<Uint8> p = ffi.malloc.allocate(plane0.length); 256 Pointer<Uint8> p = ffi.malloc.allocate(plane0.length);
264 Pointer<Uint8> p1 = ffi.malloc.allocate(plane1.length); 257 Pointer<Uint8> p1 = ffi.malloc.allocate(plane1.length);
265 258
266 - // Assign the planes data to the pointers of the image  
267 Uint8List pointerList = p.asTypedList(plane0.length); 259 Uint8List pointerList = p.asTypedList(plane0.length);
268 Uint8List pointerList1 = p1.asTypedList(plane1.length); 260 Uint8List pointerList1 = p1.asTypedList(plane1.length);
269 pointerList.setRange(0, plane0.length, plane0); 261 pointerList.setRange(0, plane0.length, plane0);
270 pointerList1.setRange(0, plane1.length, plane1); 262 pointerList1.setRange(0, plane1.length, plane1);
271 263
272 - // Call the convertImage function and convert the YUV to RGB  
273 Pointer<Uint32> imgP = _convertImageNV12ToRGB( 264 Pointer<Uint32> imgP = _convertImageNV12ToRGB(
274 p, 265 p,
275 p1, 266 p1,
@@ -283,15 +274,11 @@ class IProcessingCameraImage implements ProcessingCameraImage { @@ -283,15 +274,11 @@ class IProcessingCameraImage implements ProcessingCameraImage {
283 isFlipHoriozntal, 274 isFlipHoriozntal,
284 ); 275 );
285 276
286 - // Get the pointer of the data returned from the function to a List  
287 final imgData = imgP.asTypedList(((newImgWidth) * (newImgHeight))); 277 final imgData = imgP.asTypedList(((newImgWidth) * (newImgHeight)));
288 278
289 - // // Generate image from the converted data  
290 imglib.Image img = 279 imglib.Image img =
291 imglib.Image.fromBytes(newImgWidth, newImgHeight, imgData); 280 imglib.Image.fromBytes(newImgWidth, newImgHeight, imgData);
292 281
293 - // Free the memory space allocated  
294 - // from the planes and the converted data  
295 ffi.malloc.free(p); 282 ffi.malloc.free(p);
296 ffi.malloc.free(p1); 283 ffi.malloc.free(p1);
297 ffi.malloc.free(imgP); 284 ffi.malloc.free(imgP);