2013-05-20 3 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/Filter/ImageSize.php, но нет ни одного файла названный ImageSize.php, даже в полной версии последней версии. – micker

+0

Угадайте, я ударил кирпичную стену, так как изображение поликастера zend filter imageiz похоже сломано. – micker

ответ

1

Zend Framework не поставляется с компонентом для обработки изображений.

Хорошие новости! PHP имеет несколько компонентов, которые действительно хорошо справляются со всеми видами проблем с изображением.

GD (один из тех больших расширений PHP) в настоящее время поставляется в качестве основного расширения для 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

Смежные вопросы