2014-10-28 1 views
0

Я сделал загрузку изображений в моей папке webroot.Загрузите изображение, создайте увеличенные изображения

how to upload image in cakephp2.5+ and store it in webroot folder

echo $this->Form->input('varbigimg', array('type' => 'file')); 

это мой добавить изображение в файл представления , если я пишу то же самое в edit.ctp, то он не будет отображаться имя. он попросит снова просмотреть изображение.

поэтому я хочу, если изображение загружено, тогда оно отображает изображение в форме. в странице редактирования, а также в надстройке страницы благодаря

+0

Вы хотите, чтобы большой палец изображение После нажатия на кнопку SAVE? или просто загрузка aftr ??? –

+0

Я хочу его также на странице редактирования, а также на текущей странице. после загрузки. он будет отображаться ниже поля. и я также изменяю его или удаляю. без труда. спасибо .. и то же самое, когда я редактирую эту страницу. – newsurt

ответ

0

Сначала внутри использования класса контроллера:

var $components=array('ImageResize'); 

Второй внутри контроллера/Компонентный папку наклеить ImageResizeComponent.php файл.

Теперь компонент imageResize. как ваш старый код в другом вопросе. Только после загрузки.

// Ваш старый код, обычная загрузка изображения.

move_uploaded_file(
     $this->request->data['Tour']['varbigimg']['tmp_name'], 
     $oldFile 
); 

// Thumb код (добавить после предыдущего кода загрузки изображения, как описано выше)

define('ROOT_PATH','../../app/'); 

$newFile = ROOT_PATH.'webroot/courseImages/thumb/'.$fileName; 

$image = new ImageResizeComponent(); 
$quality = 100; // image resize for thumb 
$height = 40; 
$width = 60; 
$this->ImageResize->resize($oldFile, $newFile, 60,60,$quality); 

here webroot/courseImages/thumb/ Сделать папку и проверить в этой папке, если маленькое изображение есть

// Обновление Показать изображение на экране редактирования:

<img src="app/webroot/courseImages/thumb/<?php echo $this->request->data['Tour']['varbigimg'];?>" 

As $ this-> request-> data ['Tour'] ['varbigimg']; хранит имя изображения. И маленькое изображение имеет одно и то же имя. И загружается только в папку differend. Вам просто нужно добавить путь изображения Thumb к img и в конце просто добавить имя изображения в таблице для этого идентификатора тура.

Только в случае, если у ДНТ ВГА ImageResizeComponent.php файл создать его

<?php 
class ImageResizeComponent extends Object { 
    public $name = 'Image'; 
    private $__errors = array(); 


    function initialize(){} 
    function beforeRedirect(){} 
    function startup(){} 
    function beforeRender(){} 
    function shutdown(){} 
    // The above functions should be mandatory while using a component. 


    /** 
    * Determines image type, calculates scaled image size, and returns resized image. If no width or height is 
    * specified for the new image, the dimensions of the original image will be used, resulting in a copy 
    * of the original image. 
    * 
    * @param string $original absolute path to original image file 
    * @param string $new_filename absolute path to new image file to be created 
    * @param integer $new_width (optional) width to scale new image (default 0) 
    * @param integer $new_height (optional) height to scale image (default 0) 
    * @param integer $quality quality of new image (default 100, resizePng will recalculate this value) 
    * 
    * @access public 
    * 
    * @return returns new image on success, false on failure. use ImageComponent::getErrors() to get an array 
    * of errors on failure 
    */ 
    public function resize($original, $new_filename, $new_width = 0, $new_height = 0, $quality = 100) { 
     if(!($image_params = getimagesize($original))) { 
      $this->__errors[] = 'Original file is not a valid image: ' . $orignal; 
      return false; 
     } 

     $width = $image_params[0]; 
     $height = $image_params[1]; 

     if(0 != $new_width && 0 == $new_height) { 
      $scaled_width = $new_width; 
      $scaled_height = floor($new_width * $height/$width); 
     } elseif(0 != $new_height && 0 == $new_width) { 
      $scaled_height = $new_height; 
      $scaled_width = floor($new_height * $width/$height); 
     } elseif(0 == $new_width && 0 == $new_height) { //assume we want to create a new image the same exact size 
      $scaled_width = $width; 
      $scaled_height = $height; 
     } else { //assume we want to create an image with these exact dimensions, most likely resulting in distortion 

       if ($width > $height) { 
       $percentage = ($new_width/$width); 
       } else { 
       $percentage = ($new_width/$height); 
       } 
       //gets the new value and applies the percentage, then rounds the value 
       $scaled_width = round($width * $percentage); 
       $scaled_height = round($height * $percentage); 




      /*$scaled_width = $width; 
      $scaled_height = $height; 


      if ($width == 0 || $height == 0) { 
       $scaled_width= $new_width; 
       $scaled_height = $new_width; 
      } 
      else if ($width > $height) { 
       if ($width > $new_width) $scaled_width = $new_width; 
      } 
      else { 
       if ($height > $new_height) $scaled_height = $new_height; 
      }*/ 





     } 

     //create image   
     $ext = $image_params[2]; 
     switch($ext) { 
      case IMAGETYPE_GIF: 
       $return = $this->__resizeGif($original, $new_filename, $scaled_width, $scaled_height, $width, $height, $quality); 
       break; 
      case IMAGETYPE_JPEG: 
       $return = $this->__resizeJpeg($original, $new_filename, $scaled_width, $scaled_height, $width, $height, $quality); 
       break; 
      case IMAGETYPE_PNG: 
       $return = $this->__resizePng($original, $new_filename, $scaled_width, $scaled_height, $width, $height, $quality); 
       break;  
      default: 
       $return = $this->__resizeJpeg($original, $new_filename, $scaled_width, $scaled_height, $width, $height, $quality); 
       break; 
     } 

     return $return; 
    } 

/* Function getErrors 
* @param void 
* @return error 
*/ 

    public function getErrors() { 
     return $this->__errors; 
       } 


/*Function __resizeGif 
* @param $original 
    * @param $new_filename 
    * @param $scaled_width 
    * @param $scaled_height 
    * @param $width 
    * @param $height 
    * @return bool 
    */ 
    private function __resizeGif($original, $new_filename, $scaled_width, $scaled_height, $width, $height) { 
     $error = false; 

     if(!($src = imagecreatefromgif($original))) { 
      $this->__errors[] = 'There was an error creating your resized image (gif).'; 
      $error = true; 
     } 

     if(!($tmp = imagecreatetruecolor($scaled_width, $scaled_height))) { 
      $this->__errors[] = 'There was an error creating your true color image (gif).'; 
      $error = true; 
     } 

     if(!imagecopyresampled($tmp, $src, 0, 0, 0, 0, $scaled_width, $scaled_height, $width, $height)) { 
      $this->__errors[] = 'There was an error creating your true color image (gif).'; 
      $error = true; 
     } 

     if(!($new_image = imagegif($tmp, $new_filename))) { 
      $this->__errors[] = 'There was an error writing your image to file (gif).'; 
      $error = true; 
     } 

     imagedestroy($tmp); 

     if(false == $error) { 
      return $new_image; 
     } 

     return false; 
    } 

/*Function __resizeJpeg 
* @param $original 
    * @param $new_filename 
    * @param $scaled_width 
    * @param $scaled_height 
    * @param $width 
    * @param $height 
    * @param $quality 
    * @return bool 
    */ 
    private function __resizeJpeg($original, $new_filename, $scaled_width, $scaled_height, $width, $height, $quality) { 
     $error = false; 

     //echo ">>>".$scaled_width.">>>>".$scaled_height.">>>".$width.">>>".$height; die; 

     if(!($src = imagecreatefromjpeg($original))) { 
      $this->__errors[] = 'There was an error creating your resized image (jpg).'; 
      $error = true; 
     } 

     if(!($tmp = imagecreatetruecolor($scaled_width, $scaled_height))) { 
      $this->__errors[] = 'There was an error creating your true color image (jpg).'; 
      $error = true; 
     } 

     if(!imagecopyresampled($tmp, $src, 0, 0, 0, 0, $scaled_width, $scaled_height, $width, $height)) { 
      $this->__errors[] = 'There was an error creating your true color image (jpg).'; 
      $error = true; 
     } 

     if(!($new_image = imagejpeg($tmp, $new_filename, $quality))) { 
      $this->__errors[] = 'There was an error writing your image to file (jpg).'; 
      $error = true; 
     } 

     imagedestroy($tmp); 

     if(false == $error) { 
      return $new_image; 
     } 

     return false; 
    } 

/* Function __resizePng - resize a png image 
* @param $original 
* @param $new_filename 
* @param $scaled_width 
* @param $scaled_height 
* @param $width 
* @param $height 
* @param $quality 
* @return bool 
*/ 
    private function __resizePng($original, $new_filename, $scaled_width, $scaled_height, $width, $height, $quality) { 
     $error = false; 
     /** 
     * we need to recalculate the quality for imagepng() 
     * the quality parameter in imagepng() is actually the compression level, 
     * so the higher the value (0-9), the lower the quality. this is pretty much 
     * the opposite of how imagejpeg() works. 
     */ 
     $quality = ceil($quality/10); // 0 - 100 value 
     if(0 == $quality) { 
      $quality = 9; 
     } else { 
      $quality = ($quality - 1) % 9; 
     } 


     if(!($src = imagecreatefrompng($original))) { 
      $this->__errors[] = 'There was an error creating your resized image (png).'; 
      $error = true; 
     } 

     if(!($tmp = imagecreatetruecolor($scaled_width, $scaled_height))) { 
      $this->__errors[] = 'There was an error creating your true color image (png).'; 
      $error = true; 
     } 

     imagealphablending($tmp, false); 

     if(!imagecopyresampled($tmp, $src, 0, 0, 0, 0, $scaled_width, $scaled_height, $width, $height)) { 
      $this->__errors[] = 'There was an error creating your true color image (png).'; 
      $error = true; 
     } 

     imagesavealpha($tmp, true); 

     if(!($new_image = imagepng($tmp, $new_filename, $quality))) { 
      $this->__errors[] = 'There was an error writing your image to file (png).'; 
      $error = true; 
     } 

     imagedestroy($tmp); 

     if(false == $error) { 
      return $new_image; 
     } 

     return false; 
    } 
} 
?> 
+0

не получил никакого решения. теперь мои данные не сохранятся ..! в соответствии с вашим вступлением, я добавил код в дополнение к действию. в ссылке ниже переместить папку. после этого i als0 элемент контроллера ящика. но ничего не происходит/thnks – newsurt

+0

Вы получаете небольшое изображение в папке, которую вы создали для большого пальца? Имеет ли папка разрешение 777? –

+0

oh k получить изображение большого пальца в папке спасибо :) теперь что делать – newsurt