[php] تحميل، تغيير الحجم، ومحصول مركز الصورة مع فب


Answers

هناك بسيطة للاستخدام، مكتبة مفتوحة المصدر تسمى فب صورة الساحر . ويستخدم غ ولكن يبسط استخدامه ل 3 خطوط.

مثال على الاستخدام الأساسي:

$magicianObj = new imageLib('racecar.jpg');
$magicianObj -> resizeImage(100, 200, 'crop');
$magicianObj -> saveImage('racecar_small.png');
Question

أنا أريد أن إنشاء تحميل الأساسية جدا جدا، تغيير الحجم، ومحصول فب النصي. وظيفة لهذا سوف تكون متطابقة (آخر راجعت على أي حال) إلى طريقة تويتر يستخدم لتحميل الصور الرمزية.

أريد أن يأخذ النص البرمجي أي حجم الصورة، تغيير حجم أقصر جانب إلى 116px، ثم المحاصيل قبالة أعلى وأسفل (أو الجانب الأيسر والأيمن إذا كان المشهد) للحصول على مربع 116px 116px.

أنا لا أريد النصي فب المتضخمة مع تغيير حجم العميل أو أي شيء، مجرد تغيير حجم فب بسيط والمحاصيل. كيف يتم ذلك؟




أنا جعلت هذه الوظيفة البسيطة التي هي سهلة جدا للاستخدام، فإنه يسمح لك لتغيير حجم والمحاصيل ومركز صورة إلى عرض معين والارتفاع، فإنه يمكن تقديم جبغ، ينغس وصور جيف. لا تتردد في نسخ ولصقها إلى التعليمات البرمجية:

function resize_imagejpg($file, $w, $h, $finaldst) {

   list($width, $height) = getimagesize($file);
   $src = imagecreatefromjpeg($file);
   $ir = $width/$height;
   $fir = $w/$h;
   if($ir >= $fir){
       $newheight = $h; 
       $newwidth = $w * ($width / $height);
   }
   else {
       $newheight = $w / ($width/$height);
       $newwidth = $w;
   }   
   $xcor = 0 - ($newwidth - $w) / 2;
   $ycor = 0 - ($newheight - $h) / 2;


   $dst = imagecreatetruecolor($w, $h);
   imagecopyresampled($dst, $src, $xcor, $ycor, 0, 0, $newwidth, $newheight, 
   $width, $height);
   imagejpeg($dst, $finaldst);
   imagedestroy($dst);
   return $file;


}






function resize_imagegif($file, $w, $h, $finaldst) {

   list($width, $height) = getimagesize($file);
   $src = imagecreatefromgif($file);
   $ir = $width/$height;
   $fir = $w/$h;
   if($ir >= $fir){
       $newheight = $h; 
       $newwidth = $w * ($width / $height);
   }
   else {
       $newheight = $w / ($width/$height);
       $newwidth = $w;
   }   
   $xcor = 0 - ($newwidth - $w) / 2;
   $ycor = 0 - ($newheight - $h) / 2;


   $dst = imagecreatetruecolor($w, $h);
   $background = imagecolorallocatealpha($dst, 0, 0, 0, 127);
   imagecolortransparent($dst, $background);
   imagealphablending($dst, false);
   imagesavealpha($dst, true);
   imagecopyresampled($dst, $src, $xcor, $ycor, 0, 0, $newwidth, $newheight, 
   $width, $height);
   imagegif($dst, $finaldst);
   imagedestroy($dst);
   return $file;


}



function resize_imagepng($file, $w, $h, $finaldst) {

   list($width, $height) = getimagesize($file);
   $src = imagecreatefrompng($file);
   $ir = $width/$height;
   $fir = $w/$h;
   if($ir >= $fir){
       $newheight = $h; 
       $newwidth = $w * ($width / $height);
   }
   else {
        $newheight = $w / ($width/$height);
   $newwidth = $w;
   }   
   $xcor = 0 - ($newwidth - $w) / 2;
   $ycor = 0 - ($newheight - $h) / 2;


   $dst = imagecreatetruecolor($w, $h);
   $background = imagecolorallocate($dst, 0, 0, 0);
   imagecolortransparent($dst, $background);
   imagealphablending($dst, false);
   imagesavealpha($dst, true);

   imagecopyresampled($dst, $src, $xcor, $ycor, 0, 0, $newwidth, 
   $newheight,$width, $height);

   imagepng($dst, $finaldst);
   imagedestroy($dst);
   return $file;


}








function ImageResize($file, $w, $h, $finaldst) {
      $getsize = getimagesize($file);
      $image_type = $getsize[2];

      if( $image_type == IMAGETYPE_JPEG) {

         resize_imagejpg($file, $w, $h, $finaldst);
      } elseif( $image_type == IMAGETYPE_GIF ) {

         resize_imagegif($file, $w, $h, $finaldst);
      } elseif( $image_type == IMAGETYPE_PNG ) {

         resize_imagepng($file, $w, $h, $finaldst);
      }





}

كل ما عليك القيام به لاستخدامه هو يطلق عليه مثل ذلك:

ImageResize(image, width, height, destination);

على سبيل المثال

ImageResize("uploads/face.png", 100, 150, "images/user332profilepic.png");



Links