JavaScript Croppie Plugin (Recortar Imagenes) y ScriptCase
Croppie es un Plugin JavaScript muy fácil de utilizar, puedes ver su documentación
aquí.
He ajuntado la librería completa en un archivo (croppie.zip) listo para subirlo a scriptcase como librería externa.
Para el ejemplo que vamos a tratar es necesario crear una Liberia externa con el nombre "croppie" y subir el archivo croppie.zip adjuntado en esta publicación, en el ejemplo asumiremos que la libraría externa fue creada como pública.
1.- Crear la librería externa (pública) con el nombre croppie y subir el archivo croppie.zip a esta librería, esta debe quedar se la siguiente forma:

2.- Crear un formulario de control y crear en este los siguientes campos :

3.- Configurar el campo foto con los siguientes valores :

En el atributo imagen: puedes utilizar una imagen cualquiera.
4.- El campo btnCargaFoto agregamos en el atributo texto el siguiente código HTML; para crear el botón de selección de archivo.

<input type="file" id="getfile" name="getfile" class="custom-file-input"/>
5.- En el evento onScriptinit colocamos el siguiente código.
// onScriptInit
// Carepeta donde se colocará la imagen recortada al guardar.
$imgFolder = $_SERVER['DOCUMENT_ROOT'].rtrim($this->Ini->path_prod,'/prod').'/file/imgrecortadas';
// Nombre del archivo que se guardará, este lo debes pasar como parámetros.
$imgFileName = [nombre_archivo_resultado];
?>
<html>
<head>
<!-- Cargando hoja de estilo de la libreria croppie -->
<link rel="stylesheet" href="<?=sc_url_library('sys', 'croppie', 'croppie.css')?>" />
<style>
/* Dando un poco de estilo al botón de cargar archivos. */
.custom-file-input::-webkit-file-upload-button {
visibility: hidden;
}
.custom-file-input::before {
content: 'Nueva Imagen';
display: inline-block;
background: #188038;
border: 1px solid #999;
border-radius: 10px;
padding: 5px 8px;
outline: none;
white-space: nowrap;
-webkit-user-select: none;
cursor: pointer;
text-shadow: 1px 1px #b7c2bb;
font-weight: 700;
font-size: 10pt;
color : white;
}
.custom-file-input:hover::before {
border-color: black;
}
.custom-file-input:active::before {
background: -webkit-linear-gradient(top, #e3e3e3, #f9f9f9);
}
</style>
</head>
<body>
<!-- Cargado libreria croppie -->
<script src="<?=sc_url_library('sys', 'croppie', 'croppie.min.js')?>"></script>
<script src="<?=sc_url_library('sys', 'croppie', 'exif.js')?>"></script>
<script>
// Configurando variables globales javaScript para utilizar con la libreria.
var imgcnt;
var objcropimg;
var getfile;
var imgFileName = "<?=$imgFileName?>";
var imgFolder = "<?=$imgFolder?>";
// Creando el objeto de recorte de imagen y lo enlazamos con el campo img.
document.addEventListener("DOMContentLoaded", function(event) {
// id_imghtml_foto : es el elemento que genera scriptcase para el campo Foto
// eso se puede encontrar a traves del inspector de código de Google Chrome
imgcnt = document.getElementById('id_imghtml_foto').firstChild;
// Enalzadamos con el objecto Croppie
objcropimg = new Croppie(imgcnt, {
viewport: {width: 250,
height: 300,
type:'square' //circle
},
enableResize: true,
enableOrientation: true,
enableExif: true,
boundary : { widht: 400,
height: 400}
});
// Vinculando el evento onchange del botón de selección de archivo con
// el evento de vinculación del archivo con el objeto de recorte de imagen.
getfile = document.getElementById('getfile');
getfile.addEventListener("change", function() {
var lector = new FileReader();
lector.onload = function (event) {
objcropimg.bind(
{ url: event.target.result}
).then(function(){
console.log('Foto cargada completamente :'+imgFileName);
});
}
lector.readAsDataURL(this.files[0]);
}, false);
});
</script>
</body>
</html>
<?php
6.- Creamos el botón javaScript "btnGuardar" para guardar la imagen recortada con los siguientes valores:

y le agregamos el siguiente código JavaScript:
objcropimg.result({
type: 'canvas',
size: 'viewport'
}).then(function(response){
$.ajax({
url:"<?=sc_url_library('sys', 'croppie', 'upload.php')?>",
type: "POST",
data:{"image": response,
"imgFileName": imgFileName,
"imgFolder" : imgFolder
},
success:function(data)
{
console.log('Imagen guardada: '+imgFileName );
scBtnFn_sys_format_ok();
}
});
});
7.- En la Barra de Herramientas configuraremos los botones btnGuardar, Ok y Salir en la Barra de Herramientas inferior (es obligatorio hacerlo así).

8.- En el Evento Onload colocamos el siguiente código para esconder el botón OK, queremos que las funcionalidades de este continúen activas, por eso solo lo escondemos:
// Onload
?>
<script>
document.addEventListener("DOMContentLoaded", function(event) {
document.getElementById("sub_form_b").style.visibility = "hidden";
});
</script>
<?php
9.- Si queremos que al terminar de guardar el formulario se cierre entonces debemos de incluir en el evento onValidateSuccess el siguiente codigo
// OnValidateSuccess
sc_exit();
Si todo está correcto, entonces debería verse de esta forma cuando lo ejecute:

Espero que este aporte sirva de ayuda.