Nada de muitas explicações sobre como implementar, vamos para um exemplo… o CodeIgniter possui classes para upload de arquivos e manipulação de imagens.
Para começar, crie a seguinte view chamada form.php:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>Upload e crop de imagem – CI</title>
</head>
<body>
<h1>Upload e crop de imagem – CI</h1>
<form action="/index.php/imagem/upload" enctype="multipart/form-data" method="post">
<input type="file" name="userfile" />
<button>enviar</button>
</form>
</body>
</html>
Então, crie o seguinte controller.
<?php
class Imagem extends Controller {
function Imagem() {
parent::Controller();
}
function index() {
$this->load->view("form");
}
function upload() {
//parametriza as preferências
$config["upload_path"] = "/var/www/uploads/";
$config["allowed_types"] = "gif|jpg|png";
$config["overwrite"] = TRUE;
$this->load->library("upload", $config);
//em caso de sucesso no upload
if ($this->upload->do_upload()) {
//renomeia a foto
$nomeorig = $config["upload_path"] . "/" . $this->upload->file_name;
$nomedestino = $config["upload_path"] . "/minhafoto" . $this->upload->file_ext;
rename($nomeorig, $nomedestino);
//define opções de crop
$config["image_library"] = "gd2";
$config["source_image"] = $nomedestino;
$config["width"] = 300;
$config["height"] = 300;
$this->load->library("image_lib", $config);
$this->image_lib->crop();
} else {
echo $this->upload->display_errors();
}
}
}
O método index() apenas retorna para a view form.php. Já o método upload é que faz a mágica.
Nele, você configura as preferências do upload (caminho do arquivo a ser salvo, tipos de arquivo, etc…). Se o upload for feito com sucesso, renomeamos o arquivo e usando a classe de manipulação de imagens (deve ser feita a configuração das preferências, como qual a biblioteca a ser usada, dimensões e afins). Voi