Hi all.
I used ProCamBase64.TakePreviewImageToBase64 got taken picture encoded into string, does it directly encoded as long as take picture or possibly to add a reduce before encoded?
also, how to use ProCamBase64.Zoom zoomRatio? fill percentage?
When Button1.Click
→ call ProCamBase64.TakePreviewImageToBase64
When ProCamBase64.Base64Received(base64String)
→ set TinyWebDB/WebViewer.WebViewString to ""
→ call WebViewer.GoToUrl("file:///android_asset/resize.html") // custom HTML
→ set global originalBase64 to base64String
When WebViewer.PageLoaded
→ call WebViewer.EvaluateJavaScript("
resizeBase64Image('" + global originalBase64 + "');
")
When WebViewer.WebViewStringChanged
→ set global resizedBase64 to WebViewer.WebViewString
→ call Label1.Text to length of global resizedBase64
→ (optional) Set Image1.Picture to "data:image/jpeg;base64," + global resizedBase64
resize.html code
<!DOCTYPE html>
<html>
<body>
<canvas id="canvas" style="display:none;"></canvas>
<script>
function resizeBase64Image(base64) {
var img = new Image();
img.onload = function () {
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
// Resize logic
var targetWidth = 200; // change as needed
var targetHeight = (img.height / img.width) * targetWidth;
canvas.width = targetWidth;
canvas.height = targetHeight;
ctx.drawImage(img, 0, 0, targetWidth, targetHeight);
var resizedBase64 = canvas.toDataURL("image/jpeg", 0.7).split(',')[1];
// Send back to App Inventor
AppInventor.setWebViewString(resizedBase64);
};
img.src = "data:image/jpeg;base64," + base64;
}
</script>
</body>
</html>