PHP创建缩略图,垂直图像变为水平

时间:2011-03-16 19:04:54

标签: php

问候......我正在按目录动态调整JPG的大小。照片本质上是随机水平或垂直的。我的脚本(包含在下面)按预期工作 - 除了一个特定情况。那种情况是我将照片直接从存储卡传输到最终目录,从中创建拇指。在这种情况下 - 我的垂直照片会生成水平拇指。

如果我处理已处理,调整大小或未调整大小的图像文件夹,则不会发生此问题。垂直照片在相机上,在存储卡上旋转,这可以通过在我的本地驱动器上垂直预览为垂直的事实来证明。但是,如果我通过缩略图脚本运行未触摸的文件,它会顺时针旋转90度垂直!

有没有人聪明有什么想法? :)

此外,我还想在我的界面中放置一个“旋转”按钮,但我无法使用php函数rotateimage()。样本很简单...没有错误,但在浏览器中我得到一英里的符号和文字。之前看过吗?

感谢。

    function createThumbs( $pathToImages, $pathToThumbs, $thumbWidth ) 
{
  // open the directory
  $dir = opendir( $pathToImages );

  // loop through it, looking for any/all JPG files:
  while (false !== ($fname = readdir( $dir ))) {
    // parse path for the extension
    $info = pathinfo($pathToImages . $fname);
    // continue only if this is a JPEG image
    if ( strtolower($info['extension']) == 'jpg' ) 
    {
      echo "Creating thumbnail for {$fname} <br />";

      // load image and get image size
      $img = imagecreatefromjpeg( "{$pathToImages}{$fname}" );
      $width = imagesx( $img );
      $height = imagesy( $img );

      // calculate thumbnail size
      $new_width = $thumbWidth;
      $new_height = floor( $height * ( $thumbWidth / $width ) );

      // create a new tempopary image
      $tmp_img = imagecreatetruecolor( $new_width, $new_height );

      // copy and resize old image into new image 
      //imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );
    imagecopyresampled( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );
      // save thumbnail into a file
      imagejpeg( $tmp_img, "{$pathToThumbs}{$fname}" );
    }
  }
  // close the directory
  closedir( $dir );
}

1 个答案:

答案 0 :(得分:0)

您是否有可能将高度传递给函数而不是初始3变量中的宽度?这可能会造成这个问题。我们没有传递这些变量的代码片段,您可能想要提出它。