【问题标题】:Image shrinking for thumbnails (PHP) doesn't work缩略图的图像缩小(PHP)不起作用
【发布时间】:2013-08-12 17:22:49
【问题描述】:

我试图制作一个图片库,但我被困在缩小脚本上。我把它做成了函数。原始输入 $_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']);                
    }  

感谢您的建议。

【问题讨论】:

    标签: php image forms image-processing autoresize


    【解决方案1】:

    我建议你不要写已经写了很多次的代码...... 尝试使用一些开源类。喜欢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”选项代替“c​​rop”,并提供最大宽度和高度。这意味着,图像分辨率将根据您提供的最大属性以及图像方向生成。试试看;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-13
      • 2014-10-28
      • 2012-01-27
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 2014-05-28
      • 2017-05-07
      相关资源
      最近更新 更多