שלח תשובה

זירת השאלות

410
צפיות
0
תשובות

הקטנה אוטומטית של תמונה

,‏ 12 במרץ, 2005

שלום לכולם!

כדי להקטין תמונה שהועלתה לשרת באופן אוטומטי אני משתמש בפונקציה שאצלי על המחשב עובדת מצויין (שרת אפאצ’י על ווינדוס), אבל על השרת (לינוקס על MySQL) זה עושה בעיות כשמדובר בתמונות גדולות.

התהליך הוא: העלאת התמונה לשרת, שמירה בתיקייה זמנית, ביצוע שינויי גודל של התמונה ושמירה בתיקיות אחרות, ולסיום מחיקת התמונה המקורית. עם תמונות קטנות אין בעיה אבל שמתי לב שכשמדובר בתמונות גדולות יש בעיה.

למשל תמונה jpg, 72dpi, רוחב 3500 פיקסלים, משקל כ 200k. התמונה הועלתה לשרת (לתיקייה הזמנית) בהצלחה, אבל שם זה נעצר. לא נשמרו תמונות בגודל החדש ולא נמחקה התמונה המקורית.

אולי מישהו יוכל לומר לי ממה נובעת הבעיה?


הפונקציה שמטפלת בהקטנה (היא מקבלת את מיקום התמונה המקורית, יעד התמונה החדשה, רוחב מקסימלי, גובה מקסימלית, ואיכות ה jpg):






<?
function resampimagejpg($forcedwidth,$forcedheight,$sourcefile,$destfile,$imgcomp){
$g_imgcomp=100-$imgcomp;
$g_srcfile=$sourcefile;
$g_dstfile=$destfile;
$g_fw=$forcedwidth;
$g_fh=$forcedheight;

if(file_exists($g_srcfile)){
   $g_is=getimagesize($g_srcfile);
   //$ImageType = $g_is[2];

   //if($ImageType == "2"){
   if($g_is[0] > $g_fw || $g_is[1] > $g_fh){
     if(($g_is[0]-$g_fw)>=($g_is[1]-$g_fh)){
       $g_iw=$g_fw;
       $g_ih=($g_fw/$g_is[0])*$g_is[1];
     }
     else{
       $g_ih=$g_fh;
       $g_iw=($g_ih/$g_is[1])*$g_is[0];
     }
     $img_src=imagecreatefromjpeg($g_srcfile);
     $img_dst=imagecreatetruecolor($g_iw,$g_ih);
     imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $g_iw, $g_ih, $g_is[0], $g_is[1]);
     imagejpeg($img_dst, $g_dstfile, $g_imgcomp);
     imagedestroy($img_dst);
     return true;
   }
   else{
     $img_src=imagecreatefromjpeg($g_srcfile);
     $img_dst=imagecreatetruecolor($g_is[0],$g_is[1]);
     imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $g_is[0], $g_is[1], $g_is[0], $g_is[1]);
     imagejpeg($img_dst, $g_dstfile, $g_imgcomp);
     imagedestroy($img_dst);
     return true;
   }
   //}
   return false;
}
else
   return false;
}
?>


תגיות:

0 תשובות

    שלח תשובה

    חדש! אחסון אתרים של וובמאסטר

    שירות אחסון אתרים
    המקצועי של וובמאסטר!

    מומחים באירוח אתרי
    WordPress, Joomla, Drupal

    • שרתי לינוקס עם CloudLinux, LiteSpeed
    • 1GB דיסק SSD, 10GB תעבורה חודשית
    • ממשק ניהול cPanel, תעודת SSL חינם

    עכשיו במחיר היכרות:
    רק 420 ש"ח לשנה!