Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 调整图像大小并创建缩略图_Php_Image_Upload_Resize - Fatal编程技术网

Php 调整图像大小并创建缩略图

Php 调整图像大小并创建缩略图,php,image,upload,resize,Php,Image,Upload,Resize,所以我有一个上传脚本,它将图像上传到一个文件夹,并将图像的路径保存在db上。我需要帮助将图像大小调整为800x600并为其创建一个拇指。还有一个问题,我需要在db中保存thumb路径吗 我想上传调整大小的图像(800x600),我不想在服务器上保存原始图像(不调整大小) 以下是我得到的: <?php include('dbconnect.php'); if(isset($_POST['enviar'])) { //START IF $nomesitio = $_POST['nome']

所以我有一个上传脚本,它将图像上传到一个文件夹,并将图像的路径保存在db上。我需要帮助将图像大小调整为800x600并为其创建一个拇指。还有一个问题,我需要在db中保存thumb路径吗

我想上传调整大小的图像(800x600),我不想在服务器上保存原始图像(不调整大小)

以下是我得到的:

<?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
?>
您可以使用它来执行图像大小调整

// *** 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');  

常规编程提示:使用空格代替制表符。这样你就不会有这样的格式问题了。大多数文本编辑器都提供此选项。(或者任何其他图像上传类,都有很多)。关于thumb路径-我更愿意创建两个文件夹-一个用于thumb,一个用于大图像-并以相同的名称保存文件->因此,您需要在db表中为此创建一个字段。因此,您是说在创建thumb之后,将该文件移动到喜欢图像的位置/拇指,并使用相同的名称?所以我应该用$nome把名字写在拇指上,对吗?所以他们有了相同的名字。@PedroFidalgo-是的,我这样做了,也许其他人有另一个想法,但这对我来说更容易。然而,调整图像大小/删除主图像很简单-但不知何故。。。无聊:)。因此,请使用一个好的类:好的,我让它工作了。当我插入一个位置时,图像的大小将调整为800x600到images_sitios/并生成一个拇指到images_sitios/缩略图。名字是一样的,所以我想我得到了我想要的:)