2013-06-26 7 views
0

Итак, у меня есть сценарий загрузки, который загружает изображение в папку и сохраняет путь изображения на db. Мне нужна помощь в изменении размера изображения до 800x600 и создание большого пальца для него. И вопрос, мне нужно сохранить большой путь в db?Изменение размера изображения и создание миниатюры

Я хочу, чтобы загрузить изменения размера изображения (800х600), я не хочу, чтобы сохранить на сервере оригинал (без изменения размера)

Вот что я получил:

<?php 
include('dbconnect.php'); 

if(isset($_POST['enviar'])) 
{ //START IF 

$nomesitio = $_POST['nome']; 
$horario = $_POST['horario']; 
$contato = $_POST['contato']; 
$morada = $_POST['morada']; 
$tipo = $_POST['tipo']; 
$freguesias = $_POST['freguesias']; 
$arqName = $_FILES['arquivo']['name']; 
$arqType = $_FILES['arquivo']['type']; 
$arqSize = $_FILES['arquivo']['size']; 
$arqTemp = $_FILES['arquivo']['tmp_name']; 
$arqError = $_FILES['arquivo']['error']; 
$tiposPermitidos = array('image/gif', 'image/jpeg', 'image/jpg', 'image/png'); 
$tamanhoPermitido = 6024 * 3000; 
if ($arqError == 0) 
{ 
    if(array_search($arqType, $tiposPermitidos) === false) 
    { 
    $retorno = '<span class="no">O tipo de arquivo enviado é invalido!</span>' ; 
    } 
    elseif ($arqSize > $tamanhoPermitido) 
    { 
    $retorno = '<span class="no">O tamanho do arquivo enviado e maior que o limite!</span>'; 
    } 
    else 
    { 
     $pasta = 'images_sitios/'; 
     $extensaoTemp = explode('.',$arqName); 
     $extensao = strtolower(end($extensaoTemp)); 
     $nome = time(). '.' . $extensao; 
     $upload = move_uploaded_file($arqTemp, $pasta . $nome); 

     if ($upload === true) 
     { 
     $ficheiro = $pasta.$nome;                  
     } 

     else 
     { 
     $retorno = '<span class="no">Nao foi possivel fazer o upload da imagem!</span>'; 
     } 
    }       
} 

if(empty($ficheiro)) 
{ 
$retorno = '<span class="quase">Insira a imagem!</span>'; 
}   

if(empty($retorno)) 
{ 
    $query = mysql_query("INSERT INTO sitio (nome_sitio, horario, contato, morada, imagem, id_tipo, id_freguesia) VALUES ('$nomesitio','$horario','$contato','$morada','$ficheiro','$tipo','$freguesias')") or die (mysql_error()); 

    if($query === true) 
    { 
    $sucesso = '<span class="yes">Sitio inserido com sucesso!</span>'; 
    echo $sucesso; 
    } 
} 
else 
{ 
echo $retorno; 
} 

} //END IF 
?> 

Как я могу сделать это? Заранее спасибо.

+0

совет общего программирования: используйте заготовки в пользу вкладок. Тогда у вас не будет таких проблем с форматированием. Большинство текстовых редакторов предоставляют эту опцию. – hek2mgl

+0

http://www.verot.net/php_class_upload.htm (или какой-либо другой класс хранения контента, их много). О дорожке большого пальца - я бы предпочел создать две папки - один для больших пальцев, один для больших изображений - и сохранить файлы под тем же именем ->, поэтому для этого вам понадобится одно поле в таблице db. – sinisake

+0

Итак, вы говорите, что после создания большого пальца, переместите этот файл, как images_sitios/thumbs, и используйте одно и то же имя? Поэтому я должен использовать $ nome, чтобы поместить имя на большой палец, не так ли? поэтому они получили то же имя .. –

ответ

0

Вы можете использовать этот resize class для выполнения изменения размера изображения.

// *** Include the class 
include("resize-class.php"); 

$data = file_get_contents($_FILES['image']['tmp_name']); 
file_put_contents("sample.jpg", $data); 

// *** 1) Initialize/load image 
$resizeObj = new resize('sample.jpg'); 

// *** 2) Resize image (options: exact, portrait, landscape, auto, crop) 
$resizeObj -> resizeImage(800, 600, 'crop');