【问题标题】:Resize image and create thumbnail调整图像大小并创建缩略图
【发布时间】:2013-06-24 05:00:50
【问题描述】:

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

我想上传调整大小的图像(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
?>

我该怎么做?提前致谢。

【问题讨论】:

  • 一般编程技巧:使用空格代替制表符。那么你就不会有这样的格式问题了。大多数文本编辑器都提供此选项。
  • verot.net/php_class_upload.htm (或任何其他图像升级类,其中有很多)。关于拇指路径-我宁愿创建两个文件夹-一个用于拇指,一个用于大图像-并以相同的名称保存文件->因此您需要在数据库表中为此设置一个字段。
  • 所以你是说在创建拇指后,将该文件移动到 images_sitios/thumbs 并使用相同的名称?所以我应该用 $nome 把名字放在拇指上,对吧?所以他们有相同的名字..
  • @PedroFidalgo - 是的,我这样做了,也许其他人有其他想法,但这对我来说更容易。然而,调整图像大小/删除主图像很简单 - 但不知何故......无聊:)。所以,为它使用一个好的类。 :)
  • 好的,我得到了这个工作。当我插入一个地方时,图像被调整为 800x600 到 images_sitios/,并为 images_sitios/thumbnails 生成一个拇指。而且名字是一样的,所以我想我得到了我想要的:)

标签: php image upload resize


【解决方案1】:

您可以使用此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');  

【讨论】:

    猜你喜欢
    • 2012-07-15
    • 2013-06-22
    • 2020-02-29
    • 2012-01-06
    • 2011-09-03
    • 2023-03-28
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    相关资源
    最近更新 更多