/** * Generate a new image to disk and return its location. * * @example '/path/to/dir/13b73edae8443990be1aa8f1a483bc27.jpg' * * @param string $dir Path of the generated file, if null will use the system temp dir * @param int $width Width of the picture in pixels * @param int $height Height of the picture in pixels * @param string $format Image format, jpg or png * @param bool $fullPath If true, returns the full path of the file generated, otherwise will only return the filename, default to true * @param string $text Text to generate on the picture * @param string $textColor Text color in hexadecimal format * @param string $backgroundColor Background color in hexadecimal format * @param string $fontPath The name/path to the font */ public static function imageFile($dir = null, $width = 800, $height = 600, $format = 'png', $fullPath = true, $text = null, $textColor = null, $backgroundColor = null, $fontPath = null) { $dir = is_null($dir) ? sys_get_temp_dir() : $dir; // GNU/Linux / OS X / Windows compatible // Validate directory path if (!is_dir($dir) || !is_writable($dir)) { throw new \InvalidArgumentException(sprintf('Cannot write to directory "%s"', $dir)); } // Generate a random filename. Use the server address so that a file // generated at the same time on a different server won't have a collision. $name = md5(uniqid(empty($_SERVER['SERVER_ADDR']) ? '' : $_SERVER['SERVER_ADDR'], true)); $filename = implode('.', [$name, $format]); $filepath = $dir . DIRECTORY_SEPARATOR . $filename; if ($text === null) { $text = static::DEFAULT_TEXT_FORMAT; } if ($textColor === null) { $textColor = static::DEFAULT_TEXT_COLOR; } if ($backgroundColor === null) { $backgroundColor = static::randomElement(static::$colors); } $textColor = static::hexColor($textColor); $backgroundColor = static::hexColor($backgroundColor); $maxTextWidth = floor($width - $width * self::TEXT_PAD_MULTIPLIER); $formattedText = str_replace(['%width%', '%height%', '%format%', '%file%', '%filepath%', '%color%', '%bgcolor%'], [$width, $height, $format, $filename, $filepath, $textColor, $backgroundColor], $text); $imanee = new \Imanee\Imanee(); $imanee->newImage($width, $height, $backgroundColor); $imanee->getDrawer()->setFontColor($textColor)->setTextAlign(\Imanee\Drawer::TEXT_ALIGN_LEFT); if ($fontPath !== null) { $imanee->getDrawer()->setFont($fontPath); } $imanee->setFormat($format)->placeText($formattedText, \Imanee\Imanee::IM_POS_MID_CENTER, $maxTextWidth)->write($filepath, static::JPEG_QUALITY); return $fullPath ? $filepath : $filename; }
public function uploadAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $db = new Fotos(); $album_id = $this->_request->getPost('album_id'); $db->setAlbumId($album_id); $adapter = new Zend_File_Transfer_Adapter_Http(); $adapter->setDestination(APPLICATION_PATH . '/../data/temp'); $upload = new Zend_File_Transfer(); $files = $upload->getFileInfo(); if (!file_exists(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id)) { mkdir(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id, 0777, true); } foreach ($files as $file => $info) { if ($upload->isUploaded($file)) { $extension = substr($info['name'], strrpos($info['name'], '.') + 1); $filename = 'photo_' . time() . '.' . $extension; $adapter->addFilter('Rename', array('target' => APPLICATION_PATH . '/../data/temp/' . $filename, 'overwrite' => true)); $adapter->receive($info['name']); if (!$adapter->receive()) { $messages = $adapter->getMessages(); echo implode("\n", $messages); exit; } //setFileName::Url $db->setUrl($filename); //setCapa::false (0) $db->setCapa(0); $imanee = new Imanee\Imanee(APPLICATION_PATH . '/../data/temp/' . $filename); //resized $imanee->resize(870, 653)->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id . DS . 'r_' . $filename, 80); //full //$imanee->resize(1024, 768) // ->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id . DS . 'f_' . $filename, 80); //thumbnail $imanee->thumbnail(200, 200, true)->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id . DS . 't_' . $filename, 60); unlink(APPLICATION_PATH . '/../data/temp/' . $filename); $data = array('url' => $db->getUrl(), 'album_id' => $db->getAlbumId(), 'capa' => $db->getCapa()); $foto_id = $db->saveFoto($data); $data['foto_id'] = $foto_id; echo json_encode($data); } } }
public function editarAction() { $eq = new Equipe(); $request = $this->getRequest(); $id = $request->getParam('id'); $equipe = $eq->getById($id); if (!$equipe) { $this->_helper->redirector('listar', 'equipe'); } $erro = false; if ($request->isPost()) { $erro = false; $msg = ''; $eq->setNome($request->getPost('Nome')); $eq->setCargo($request->getPost('Cargo')); $eq->setDescricao($request->getPost('Descricao')); $data = array('nome' => $eq->getNome(), 'cargo' => $eq->getCargo(), 'descricao' => $eq->getDescricao()); $eq->save($data, $id); $adapter = new Zend_File_Transfer_Adapter_Http(); $adapter->setDestination(APPLICATION_PATH . '/../data/temp'); $upload = new Zend_File_Transfer(); $files = $upload->getFileInfo(); if ($files['Avatar']['tmp_name']) { if (!file_exists(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'equipe' . DS . $id)) { mkdir(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'equipe' . DS . $id, 0777, true); } foreach ($files as $file => $info) { if ($upload->isUploaded($file)) { //$extension = substr($info['name'], strrpos($info['name'], '.') + 1); $filename = 'avatar.jpg'; $adapter->addFilter('Rename', array('target' => APPLICATION_PATH . '/../data/temp/' . $filename, 'overwrite' => true)); $adapter->receive($info['name']); if (!$adapter->receive()) { $messages = $adapter->getMessages(); echo implode("\n", $messages); exit; } //setFileName::Url $eq->setAvatar($filename); $imanee = new Imanee\Imanee(APPLICATION_PATH . '/../data/temp/' . $filename); //resized $imanee->resize(300, 300)->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'equipe' . DS . $id . DS . $filename, 80); //full //$imanee->resize(1024, 768) // ->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id . DS . 'f_' . $filename, 80); unlink(APPLICATION_PATH . '/../data/temp/' . $filename); } } } if ($erro) { $msg = 'Ocorreu um erro, tente novamente'; $this->view->msg = $msg; } else { $this->_helper->redirector('listar', 'equipe'); } } $this->view->equipe = $equipe; $this->render(); }
public function editarAction() { $tp = new LoginTipo(); $ut = new Util(); $us = new Usuarios(); $tiposLogin = $tp->getAllLoginTipo(); $request = $this->getRequest(); $id = $request->getParam('id'); $usuario = $us->getUserByLoginId($id); if (!$usuario) { $this->_helper->redirector('listar', 'usuarios'); } if ($request->isPost()) { $erro = false; $msg = ''; $nascimento = empty($request->getPost('Nascimento')) ? NULL : $ut->dateToSql($request->getPost('Nascimento')); $now = $ut->nowDateSql(); $rg = $ut->limpaDados($request->getPost('Rg')); $cpf = $ut->limpaDados($request->getPost('Cpf')); $telefone = $ut->limpaDados($request->getPost('Telefone')); $celular = $ut->limpaDados($request->getPost('Celular')); $us->setNome($request->getPost('Nome')); $us->setSobrenome($request->getPost('Sobrenome')); $us->setEmail($request->getPost('Email')); $us->setLoginId($id); $us->setRg($rg); $us->setCpf($cpf); $us->setNascimento($nascimento); $us->setTelefone($telefone); $us->setCelular($celular); $us->setSexo($request->getPost('Sexo')); $us->setCadastradoEm($now); $data = array('nome' => $us->getNome(), 'sobrenome' => $us->getSobrenome(), 'email' => $us->getEmail(), 'login_id' => $us->getLoginId(), 'rg' => $us->getRg(), 'cpf' => $us->getCpf(), 'nascimento' => $us->getNascimento(), 'telefone' => $us->getTelefone(), 'celular' => $us->getCelular(), 'sexo' => $us->getSexo()); $us->saveUser($data, $id); $adapter = new Zend_File_Transfer_Adapter_Http(); $adapter->setDestination(APPLICATION_PATH . '/../data/temp'); $upload = new Zend_File_Transfer(); $files = $upload->getFileInfo(); if ($files['Avatar']['tmp_name']) { if (!file_exists(ROOT_DIR . DS . 'painel' . DS . 'images' . DS . 'usuario' . DS . $id)) { mkdir(ROOT_DIR . DS . 'painel' . DS . 'images' . DS . 'usuario' . DS . $id, 0777, true); } foreach ($files as $file => $info) { if ($upload->isUploaded($file)) { //$extension = substr($info['name'], strrpos($info['name'], '.') + 1); $filename = 'avatar.jpg'; $adapter->addFilter('Rename', array('target' => APPLICATION_PATH . '/../data/temp/' . $filename, 'overwrite' => true)); $adapter->receive($info['name']); if (!$adapter->receive()) { $messages = $adapter->getMessages(); echo implode("\n", $messages); exit; } //setFileName::Url2 $us->setAvatar($filename); $imanee = new Imanee\Imanee(APPLICATION_PATH . '/../data/temp/' . $filename); //resized $imanee->resize(300, 300, false)->write(ROOT_DIR . DS . 'painel' . DS . 'images' . DS . 'usuario' . DS . $id . DS . $filename, 80); //full //$imanee->resize(1024, 768) // ->write(ROOT_DIR . DS . 'site' . DS . 'images' . DS . 'galeria' . DS . $album_id . DS . 'f_' . $filename, 80); unlink(APPLICATION_PATH . '/../data/temp/' . $filename); } } } if ($erro) { $msg = 'Ocorreu um erro, tente novamente'; $this->view->msg = $msg; } else { $this->_helper->redirector('listar', 'usuarios'); } } $this->view->usuario = $usuario; $this->view->tipos = $tiposLogin; $this->view->util = $ut; $this->render(); }
public function atualizarAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $slug = new My_Slugifier(); $slug->setTransliterate(true); #Remover também caractéres Latin (ex.: á, ü, ç) if ($this->_request->isPost()) { $tipo = $this->_request->getPost('tipo'); $material_id = $this->_request->getPost('material_id'); if ($tipo == 'imagem') { $imagem = $this->_request->getPost('imagem'); //localização que imagem será salva (temp) $imageName = 'material_' . time() . '.jpg'; $url = ROOT_DIR . DS . '..' . DS . 'data' . DS . 'temp' . DS . $imageName; //remove criptografia e especificações da string de imagem $base64 = base64_decode(preg_replace('#^data:image/[^;]+;base64,#', '', $imagem)); //criar imagem $source = imagecreatefromstring($base64); //salvar imagem temporária imagejpeg($source, $url, 70); //verifica a existência do diretório e cria o mesmo (se necessário) if (!is_dir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'imagem')) { mkdir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'imagem', 0777, true); } //redimensiona a imagem mantendo a proporção e armazena nos diretórios corretos. $imanee = new Imanee\Imanee(APPLICATION_PATH . '/../data/temp/' . $imageName); //full $imanee->resize(870, 653)->write(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'imagem' . DS . 'r_' . $imageName, 80); //thumbnail $imanee->thumbnail(200, 200, true)->write(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'imagem' . DS . 't_' . $imageName, 60); //apaga imagem temporária unlink(APPLICATION_PATH . '/../data/temp/' . $imageName); #TODO: Remover a imagem atual (database) ao finalizar a alteração. #TODO: Atualizar tabela com a nova imagem. } elseif ($tipo == 'audio') { $audio = $this->_request->getPost('audio'); //armazenando a string do arquivo na variável $base64 $base64 = base64_decode(preg_replace('#^data:audio/[^;]+;base64,#', '', $audio)); //obtendo formato do arquivo ($extension) base64_decode(preg_match('/audio\\/[^;]+;/', $audio, $decoded)); $ext = str_replace(array('audio/', ';'), array(''), $decoded); $extension = '.' . $ext[0]; //localização que o áudio será salvo (temp) $audioName = 'material_' . time() . $extension; $url = ROOT_DIR . DS . '..' . DS . 'data' . DS . 'temp' . DS . $audioName; file_put_contents($url, $base64); //verifica a existência do diretório e cria o mesmo (se necessário) if (!is_dir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'audio')) { mkdir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'audio', 0777, true); } //move o arquivo da pasta temp para a pasta correta e renomeia (se necessário) rename($url, ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'audio' . DS . $audioName); #TODO: Remover o audio atual (database) ao finalizar a alteração. #TODO: Atualizar tabela com o novo audio. } elseif ($tipo == 'arquivo') { //Dados de Exemplo (obter os mesmos do registro real #db) $titulo = 'Material de Aula - Dançando Macarena Style no passinho do Romano'; //Dados de Exemplo :: FIM $arquivo = $this->_request->getPost('arquivo'); $formato = $this->_request->getPost('formato'); //armazenando a string do arquivo na variável $base64 $base64 = base64_decode(preg_replace('#^data:([^;]*)+;base64,#', '', $arquivo)); //localização que o áudio será salvo (temp) $arquivoName = 'material_' . time() . '.' . $formato; $url = ROOT_DIR . DS . '..' . DS . 'data' . DS . 'temp' . DS . $arquivoName; file_put_contents($url, $base64); //verifica a existência do diretório e cria o mesmo (se necessário) if (!is_dir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'arquivo')) { mkdir(ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'arquivo', 0777, true); } //gera nome do arquivo baseado no título do material $newName = $slug->slugify($titulo) . '.' . $formato; //move o arquivo da pasta temp para a pasta correta e renomeia (se necessário) rename($url, ROOT_DIR . DS . 'site' . DS . 'area-do-aluno' . DS . $material_id . DS . 'arquivo' . DS . $newName); #TODO: Remover o arquivo atual (database) ao finalizar a alteração. #TODO: Atualizar tabela com o novo arquivo. } elseif ($tipo == 'video') { $video = $this->_request->getPost('video'); var_dump($_POST); } } }