convertAndUpload function
Implementation
Future<bool> convertAndUpload(File imageFile) async {
// setState(() {
// _isUploading = true;
// });
bool isCompleted = false;
final tempDir = await getTemporaryDirectory();
final targetPath = '${tempDir.path}/resized_image.png';
final imageBytes = await imageFile.readAsBytes();
final image = img.decodeImage(imageBytes.toList());
final resizedImage = img.copyResize(image!, width: 480, height: 640);
final resizedBytes = img.encodePng(resizedImage);
await File(targetPath).writeAsBytes(resizedBytes);
final resizedImageFile = File(targetPath);
var stream = http.ByteStream(Stream.castFrom(resizedImageFile.openRead()));
// http.ByteStream(DelegatingStream.typed(resizedImageFile.openRead()));
var length = await resizedImageFile.length();
// Set _isUploading to true to show the progress bar
var url = Uri.parse('https://api.hair.mirrar.io/tryon/embed/');
var request = http.MultipartRequest('POST', url);
var multipartFile = new http.MultipartFile('user_image', stream, length,
filename: basename(resizedImageFile.path));
request.files.add(multipartFile);
var response = await request.send();
if (response.statusCode == 200) {
String responseString =
await response.stream.transform(utf8.decoder).join();
Map<String, dynamic> responseData = jsonDecode(responseString);
//print("checkString: $responseData");
userImageId = responseData['user_image_id'].toString();
//print('user_image_id: $userImageId');
isCompleted = true;
return isCompleted;
} else {
print('Request failed with status: ${response.statusCode}');
throw Exception('API call failed with status: ${response.statusCode}');
}
// Set _isUploading to false to hide the progress bar
}