2013-05-20 40 views
0

所以,我使用Zend来处理我的图片上传。这个脚本运行良好,但我想知道是否有一种方法来调整正在上传的图像的大小,而不管当前的大小是多少。我见过2个类似的帖子,但他们的代码完全不同,因此很难从他们的代码中翻译成我的代码。如果可能的话,我真的不想使用扩展名,但如果必须的话,我会。有任何想法吗?Zend公司的图片上传到需要调整图像

if (isset($_POST['upload'])) { 
require_once('scripter/lib.php'); 
//try { 
$destination = 'C:\----'; 
$uploader = new Zend_File_Transfer_Adapter_Http(); 
$uploader->setDestination($destination); 
$filename = $uploader->getFileName(NULL, FALSE); 
$uploader->addValidator('Size', FALSE, '10000kB'); 
$uploader->addValidator('ImageSize', FALSE, array('minheight' => 100, 'minwidth' => 100)); 
//$pic = $filename; 
if (!$uploader->isValid() || $errors) { 
    $messages = $uploader->getMessages(); 
} else { 
//$pic = $filename; 
$no_spaces = str_replace(' ', '_', $filename, $renamed); 
$uploader->addValidator('Extension', FALSE, 'gif, png, jpg'); 
$recognized = FALSE; 
if ($uploader->isValid()) { 
    $recognized = TRUE; 
} else { 
    $mime = $uploader->getMimeType(); 
    $acceptable = array('jpg' => 'image/jpeg', 
         'png' => 'image/png', 
         'gif' => 'image/gif'); 
    $key = array_search($mime, $acceptable); 
    if (!$key) { 
     $messages[] = 'Unrecognized image type'; 
    } else { 
     $no_spaces = "$no_spaces.$key"; 
     $recognized = TRUE; 
     $renamed = TRUE; 
    } 
} 
$uploader->clearValidators(); 
if ($recognized) { 
    $existing = scandir($destination); 
    if (in_array($no_spaces, $existing)) { 
     $dot = strrpos($no_spaces, '.'); 
     $base = substr($no_spaces, 0, $dot); 
     $extension = substr($no_spaces, $dot); 
     $i = 1; 
     do { 
      $no_spaces = $base . '_' . $i++ . $extension; 
     } while (in_array($no_spaces, $existing)); 
     $renamed = TRUE; 
    } 
$uploader->addFilter('Rename', array('target' => $no_spaces)); 
$success = $uploader->receive(); 
if (!$success) { 
$messages = $uploader->getMessages(); 
} else { 
    //$pic = $no_spaces; 
    $uploaded = "$filename uploaded successfully"; 
    $pic = $filename; 
    if ($renamed) { 
     $pic = "imgs/upld/" . $no_spaces; 
     $uploaded .= " and renamed $no_spaces"; 
     //$pic = $no_spaces; 
     //$pic = $uploader->getFileName(NULL, FALSE); 

    } else {$pic = "imgs/upld/" . $filename;;} 
    $messages[] = "$uploaded"; 
    //$pic = $no_spaces; 

} 
+0

我还看到有人在另一篇文章中使用的Zend /过滤/ ImageSize.php说,但没有文件命名为ImageSize.php,即使在最新版本上也没有。 – micker

+0

猜我碰壁,由于polycaster Zend的滤波器IMAGESIZE是貌似破碎。 – micker

回答

1

Zend框架不用于处理图像的组件发货。

好消息! PHP有几个非常擅长处理各种图像问题的组件。

GD(那些伟大的PHP扩展的一个)目前出货为核心扩展库,也许你会发现它是有用的。

也许这将帮助:http://phpcodeforbeginner.blogspot.com/2013/04/resize-image-or-crop-image-using-gd.html

(不是真的想成为太尖刻;)

+0

谢谢。 :) 我一直在寻找一个体面的方式来做到这一切的夜晚。我一定会给你一个选择,尽管看起来可能有点难以编辑我的例子。我发现的另一个有趣的帖子,虽然我没有尝试过它是PHP Thumbnailer Class v2.0。但是,是的,感谢您发布的RockyFord,我肯定会给你的发布建议一个很好的阅读,并退后一步,在我进一步深入此之前! – micker

+1

有时候很难记住Zend Framework只是PHP,并且所有可用的PHP资源都可以工作。图像大小调整是一个常见问题,并且有大量解决方案。 http://www.phpclasses.org/通常是一个很好的开始。 – RockyFord