2015-06-02 5 views
0

Я пишу код, который загружает изображение с URL-адреса, но мне нужно изменить размеры изображения на 250px * 250px при его загрузке.Измените размер изображения при загрузке

Как я могу изменить свой код, чтобы сделать это?

Пример: Если я загружаю изображение размером 130px * 185px, оно автоматически сохраняется в моем загружаемом каталоге в 250px *250px.

код, который я использую:

<?php 
    /* photo uploader*/ 

    if($_POST["submit"]){ 
    $pic = trim($_POST["pic_url"]); 

    if($pic){ 
     $photo = fopen($pic,"rb"); 

     if($photo){ 
     $valid_exts = array("jpg","jpeg","gif","png","Bmp","TIFF"); // default image only extensions 

     if($valid_exts){ 
      $newpic = fopen("../../cat/adventure/images/" . basename($pic), "wb"); // replace "downloads" with whatever directory you wish. 

      if($newpic){ 
      while(!feof($photo)){ 
       // Write the url file to the directory. 
       fwrite($newpic,fread($photo,1024 * 8),1024 * 8); // write the file to the new directory at a rate of 8kb/sec. until we reach the end. 
      } 
      } 
     } 
     } 
    } 
    } 
?> 
+0

пожалуйста форматировать Ваш код в читаемом образом – Reeno

ответ

0

Вы можете использовать следующую универсальную функцию:

include_once("ak_php_img_lib_1.0.php"); 
$target_file = "uploads/$fileName"; 
$resized_file = "uploads/resized_$fileName"; 
$wmax = 200; 
$hmax = 150; 
ak_img_resize($target_file, $resized_file, $wmax, $hmax, $fileExt); 


<?php 
// Function for resizing jpg, gif, or png image files 
function ak_img_resize($target, $newcopy, $w, $h, $ext) { 
    list($w_orig, $h_orig) = getimagesize($target); 
    $scale_ratio = $w_orig/$h_orig; 
    if (($w/$h) > $scale_ratio) { 
      $w = $h * $scale_ratio; 
    } else { 
      $h = $w/$scale_ratio; 
    } 
    $img = ""; 
    $ext = strtolower($ext); 
    if ($ext == "gif"){ 
     $img = imagecreatefromgif($target); 
    } else if($ext =="png"){ 
     $img = imagecreatefrompng($target); 
    } else { 
     $img = imagecreatefromjpeg($target); 
    } 
    $tci = imagecreatetruecolor($w, $h); 
    // imagecopyresampled(dst_img, src_img, dst_x, dst_y, src_x, src_y, dst_w, dst_h, src_w, src_h) 
    imagecopyresampled($tci, $img, 0, 0, 0, 0, $w, $h, $w_orig, $h_orig); 
    imagejpeg($tci, $newcopy, 80); 
} 
?> 
+0

Sooraj Чандран я не очень хорошо в PHP, пожалуйста, если вы можете изменить мою треску, чтобы сделать это своей универсальной функцией –

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