2013-06-28 2 views
0

Я хотел бы изменить размер и обрезать изображение. 250x250Изменение размера и изображение обрезки

я могу изменить его размер:

$newfilename = "image.jpg"; 
    if(isset($_POST['submit'])){ 
     if (isset ($_FILES['new_image'])){ 
      $imagename = $newfilename; 
      $source = $_FILES['new_image']['tmp_name']; 
      $target = "img/".$imagename; 
      move_uploaded_file($source, $target); 

      $imagepath = $imagename; 
      $save = "img/" . $imagepath; 
      $file = "img/" . $imagepath; 

      list($width, $height) = getimagesize($file) ; 


      $modwidth = 250; 

      $diff = $width/$modwidth; 

      $modheight = $height/$diff; 
      $tn = imagecreatetruecolor($modwidth, $modheight) ; 
      $image = imagecreatefromjpeg($file) ; 
      imagecopyresized($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ; 

      imagejpeg($tn, $save, 100) ; 

     } 
    } 

Но я не знаю, как обрезать его после изменения размера. Он обрезает изображение. И если у меня есть изображение 10000x10000 это плохое решение

imagecopyresized($tn, $image, 0, 0, 0, 0, 250, 250, 250, 250) ; 

ответ

-1

Вы можете просто использовать PHP, чтобы получить изображения и эхо их в HTML и применить определенную ширину/высоту для них.

+0

Это совсем не то, о чем он просит, и, честно говоря, это очень ленивый и расточительный способ сделать это. –

+0

Как насчет пропорций? – Dobrozhelatel

0

Используйте imagecreatetruecolor, чтобы создать свое новое изображение с указанным обрезанным размером, затем используйте imagecopy, чтобы скопировать его с OLD на NEW.

Пример (не тестировалось):

$newfilename = "image.jpg"; 
if(isset($_POST['submit'])){ 
    if (isset ($_FILES['new_image'])){ 
     $imagename = $newfilename; 
     $source = $_FILES['new_image']['tmp_name']; 
     $target = "img/".$imagename; 
     move_uploaded_file($source, $target); 

     $imagepath = $imagename; 
     $save = "img/" . $imagepath; 
     $file = "img/" . $imagepath; 

     list($width, $height) = getimagesize($file) ; 


     $modwidth = 250; 

     $diff = $width/$modwidth; 

     $modheight = $height/$diff; 
     $tn = imagecreatetruecolor($modwidth, $modheight) ; 
     $cropped = imagecreatetruecolor(250, 250); 
     $cropLeft = 0; // start from left 
     $cropTop = 0; // start from top 

     $image = imagecreatefromjpeg($file) ; 
     imagecopyresized($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ; 
     imagecopy($cropped, $image, 0, 0, $cropLeft, $cropTop, $modwidth, $modheight); 

     imagejpeg($cropped, $save, 100); // save cropped image 
     // imagejpeg($tn, $save, 100) ; // save resized image 

    } 
} 
+0

создает http://clip2net.com/s/5j0dZt – Dobrozhelatel

+0

Установить '$ cropped = imagecreatetruecolor ($ modwidth, $ modheight);' –

+0

Он обрабатывает только исходное изображение – Dobrozhelatel

0

Попытка использовать croppie. Github url is http://foliotek.github.io/Croppie/ Я использовал его, и он отлично работает

+0

Он просит решение на задней стороне, а не другой пакет npm. – jycr753