缩略图缩略图(PHP)不起作用

时间:2013-08-11 06:26:41

标签: php image forms image-processing autoresize

我试图建立一个图片库,但我一直在缩小脚本。我把它作为功能。原始输入$_FILES['image']已替换为$original

我很确定这部分是可以的,但我正在添加它以便更好地定位。

$orig_udaje = getimagesize($original['tmp_name']);
    $orig_sirka = $orig_udaje[0];  //original width
    $orig_vyska = $orig_udaje[1];  //original height
    $orig_typ = $orig_udaje[2];    //type of original image

$div_size = 150;  //size of image div = size of future thumbnail's smaller side

// choosing smaller side & defining resizing scale
if ($orig_sirka>$orig_vyska)
    {
      $mira = $orig_vyska / $div_size; 
    }
  else
    {
      $mira = $orig_sirka / $div_size;
    }

  $nahled_sirka = $orig_sirka / $mira;
  $nahled_vyska = $orig_vyska / $mira;

我认为陷入困境的部分是在本文之下的某处。

  $nahled_cache = imagecreatetruecolor($nahled_sirka, $nahled_vyska);
  imagecolortransparent($nahled_cache, "0, 0, 0");

  if ($orig_typ == "image/jpeg")
    {
      $nahled_tvorba = imagecreatefromjpeg($original['tmp_name']);      
      imagecopyresampled($nahled_cache, $nahled_tvorba, 0, 0, 0, 0, $nahled_sirka, $nahled_vyska, $orig_sirka, $orig_vyska);

      imagejpeg($nahled_cache, "/data/images/gallery/thumbs/output.jpg");
      imagejpeg($original['tmp_name'], "/data/images/gallery/originals/output.jpg");
      unlink($original['tmp_name']);
    }
  if ($orig_typ == "image/png")
    {
      $obrazek_tvorba = imagecreatefrompng($original['tmp_name']);
      imagecopyresampled($nahled_cache, $nahled_tvorba, 0, 0, 0, 0, $nahled_sirka, $nahled_vyska, $orig_sirka, $orig_vyska);

      imagepng($nahled_cache, "/data/images/gallery/thumbs/output.png");
      imagepng($original['tmp_name'], "/data/images/gallery/originals/output.png");
      unlink($original['tmp_name']);                
    }  

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

我建议你不要写代码,已经写了很多次...... 尝试使用一些开源类。像this one一样。该类简单轻便,并且具有相当好的文档。 用法很简单:

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

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

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

    // *** 3) Save image
    $resizeObj -> saveImage('sample-resized.gif', 100);

您可以使用'auto'选项代替'crop',并提供最大宽度和高度。这意味着,图像分辨率将根据您提供的最大属性生成,并且还基于图像方向生成。试试吧;)