Phalconphp nos da una librería llamada Phalcon\Http\Response la cual no permite entre otras cosas subir archivos y comprobar si la petición es POST. Por ello para subir un archivo solo necesitamos llamar a esa librería con use Phalcon\Http\Response en nuestra class y un formulario sencillo como este:

<?php 
    echo $this->tag->endForm();
    echo $this->tag->form(
        [
            "/usuarios/crear",
            "method" => "post",
            "enctype" => "multipart/form-data"
        ]
    );
    echo $this->tag->fileField(["imagen", "id" => "fieldImagenAvatar"]);
    echo $this->tag->submitButton(["Subir Imagen"]);
    echo $this->tag->endForm();
?>

Y en nuestro controller la siguiente sintaxis para coger el archivo y subirlo a la carpeta que queramos dentro de public al menos en Phalcon php 3.X con el código que nos da para ello:

public function crearAction()
    {
        if ($this->request->isPost()) {
            if ($this->request->hasFiles()) {
                $files = $this->request->getUploadedFiles();
                // Print the real file names and sizes
                foreach ($files as $file) {
                    // Print file details
                    $this->logger->info($file->getName(). ' '. $file->getSize());
                    // Move the file into the application
                    $file->moveTo('img/' . $file->getName());
                }
            }
        }

Ahora vamos a redimensionar la imagen siguiendo alguno de estos códigos que nos regala Phalcon php para ajustar las imágenes a nuestro gusto. Yo haré que mi imagen siempre tenga de ancho 400px y diré a la función que el alto lo ajuste en consecuencia con los 400px que puse de ancho.

Para estos códigos necesitamos la librería GD de PHP, se puede consultar si está instalada tecleando el comando php -m en una consola.

$image = new \Phalcon\Image\Adapter\Gd('img/captura.jpg');
$image->resize(
    400,
    null,
    \Phalcon\Image::WIDTH
);
$image->save('img/capturaResize.jpg');

Lo siguiente será algo básico cuando subimos imágenes, que es bajar la calidad de la imagen para que tenga un tamaño inferior al que nos dan. Para todo lo explicado se puede utilizar un código más rico que nos permita decidir que hacer en caso de que el archivo sea muy grande, o si es muy pequeño en tamaño no hacer nada, etc.

$image = new \Phalcon\Image\Adapter\Gd('img/capturaResize.jpg');
$image->save('img/capturaResizeCalidadBajada.jpg', 70); // 70% calidad en vez de 100%

Y después de esto también puedes hacer un cropping, poner una marca de agua (watermark), rotar una imagen...phalconphp nos lo pone muy fácil para manipular las imágenes que subimos a nuestro servidor.