Редактировать и обрезать загруженное изображение

Можете ли вы помочь мне отредактировать этот код?

function insert_lenses(){
    // to get userid
  $reg=$_SESSION['myusername'];
  $result_users = mysql_query("SELECT * FROM users WHERE user_name='$reg'");

  while($row_users = mysql_fetch_array($result_users))
    {
    $uid=$row_users[id];
    }

  $uploader = $_POST['uploader'];
  $path = 'photos/';
  $image=$_FILES['img_name'];
  $img_title=$_POST['title'];
  $img_tag=$_POST['tags'];
  $img_desc=$_POST['description'];
  $img_status=$_POST['status'];
  $lenses_id=$_POST['lenses'];
  $cam_id=$_POST['cams'];
  $date = date("d.m.Y");
  //------------------------------------------
  $image_size=$_FILES['img_name']['size'];
  $filename = stripslashes($_FILES['img_name']['name']);
  $extension = getExtension($filename);
  $extension = strtolower($extension);

  $image_name=time().'.'.$extension;
  $newname=$path.$image_name;
  $copied = copy($_FILES['img_name']['tmp_name'], $newname);


  if ($copied) {
    $sql=mysql_query("insert into images (uid, lid, imageurl, img_date, imagesize, imagedesc, imagetitle, imagetag, status,cam,lens,user_name,img_w,img_h)
VALUES('$uid','$lenses_id','$newname','$date','$image_size','$img_desc','$img_title','$img_tag','$$img_status','$cam_id','$lenses_id','$uploader','$w','$h')");



    return true;
  }else{
    echo "<center><h3>There are An Errors In Uploading!</h3></center>";
    return false;
  }
}


function getExtension($str) {
  $i = strrpos($str,".");
  if (!$i) { return ""; }
  $l = strlen($str) - $i;
  $ext = substr($str,$i+1,$l);
  return $ext;
}

$reg=$_SESSION['myusername'];
$result_users = mysql_query("SELECT * FROM users WHERE user_name='$reg'");

while($row_users = mysql_fetch_array($result_users))
  {
  $getid=$row_users[id];
  }

Мне нужно добавить в эту функцию ИЗМЕНЕНИЕ РАЗМЕРА И КАДРИРОВАНИЕ ИЗОБРАЖЕНИЯ Как flickr и facebook img, я создал новую папку: /img_croped

Я хочу вставить новое изображение в эту папку с помощью (изменить размер и обрезать 58 * 58 пикселей)

и :

 mysql_query("insert into images (small_img) VALUES('$croped')"); // URL VALUE

person rixlinux    schedule 10.03.2011    source источник
comment
Какие возможны типы изображений?   -  person sdleihssirhc    schedule 10.03.2011
comment
Помимо очевидных уязвимостей SQL-инъекций, не используйте значения size, name и type из массива $_FILES — они предоставляются пользователем и могут быть изменены. Также не используйте copy. Есть функция move_uploaded_file специально для загрузки файлов.   -  person Marc B    schedule 10.03.2011


Ответы (2)


Чтобы изменить размер и обрезать изображение, проверьте приведенный ниже код, который помогает обрезать изображение:

<?php
   if( isset($_POST['submit']) ) {
      include('SimpleImage.php');
      $image = new SimpleImage();
      $image->load($_FILES['uploaded_image']['tmp_name']);
      $image->resizeToWidth(300);
      $image->resizeToHeight(200);
      $image->save('resizeImage.jpg');
      //$image->output();
   } else {
?>   <form action="" method="post" enctype="multipart/form-data">
      <input type="file" name="uploaded_image" />
      <input type="submit" name="submit" value="Upload" />
   </form><?php
   }
?>

Проверьте эту ссылку (мертвая) чтобы найти класс изменения размера изображения и более подробную информацию.

person Sanjeev Kumar Jha    schedule 10.03.2011

Вы можете попробовать imagemagick для этого:

exec( "convert $newname -resize 58x58^ -gravity center -extent 58x58 /img_croped/$filename");

Это изменит размер короткой стороны до 58, а затем обрежет длинную сторону до 58 пикселей (обрезая края).

person Sergey    schedule 10.03.2011
comment
спасибо за ответ, но код не работает с моей функцией я сделал это, но функция не загружается в папку img_croped - person rixlinux; 10.03.2011
comment
@rixlinux - я не уверен, есть ли у вас /img_croped в корне, как в вашем вопросе, или где-то еще ... Последний параметр командной строки - это место, где этот файл должен быть сохранен. Измените его на нужную папку и имя файла, и все должно работать. Если нет - напишите, какую ошибку вы получаете. - person Sergey; 10.03.2011