לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 08-07-2005, 04:40
  דקל דקל אינו מחובר  
 
חבר מתאריך: 20.02.03
הודעות: 2,396
כתבה מדריכון - הקטנת תמונות GIF עם שמירה על רקע שקוף

מדריך זה מוגן בזכויות יוצרים. כל הזכויות שמורות לדקל מנהל פורום PHP.
אין להעתיק / להפיץ / לשנות בכל אמצעי, אלקטרוני או מכני את מדריך זה, ללא אישור בכתב מראש מכותבו.


נציג תחילה את הבעיה. אחת הפונקציות המיועדות להקטנת תמונות באמצעות GD הינה הפונקציה imagecopyresampled. הפונקציה מיועדת להקטנה+חיתוך (כלומר,אפשרות לקחת רק חלק מהתמונה, ולא להקטין את כל התמונה). הייתרון - יצירת תמונות אצבע (thumbnails) השומרות על הפרופורציה המקורית של התמונה, אולם חתוכות לגודל המתאים. הבעיה היא שעל מנת לשמור על שקיפות של תמונות GIF יש צורך להשתמש בפונקציה imagecopymerge אשר לא מכילה את האופציות של imagecopyresampled.
נסביר אם כן כיצד לבצע את ההקטנה עם שמירה על רקע שקוף (במידע וקיים רקע כזה).
[הערה - הקוד יוצר תמונת אצבע ברזולוציה של 80 על 60 או 60 על 80 (בהתאם ליחס רוחב:אורך של התמונה המקורית)]

הערה כללית - קבצי GIF מכילים עד 256 צבעים, כאשר ניתן להגדיר לכל קובץ צבע אחד שהוא שקוף. באמצעות הגדרה זו - נשמר הצבע כחלק מהתמונה, אולם התוכנות המציגות את התמונה יודעות להציג צבע זה כשקוף.
נעבור אם כן לקוד ולהסברים
קוד PHP:
 $file 'someimage.gif';

list(
$width$height) = getimagesize($file);
if (
$width>$height// בדיקה האם מדובר בתמונה רחבה או ארוכה
{
    
$new_width=80;
    
$new_height=(round(($height/$width)*$new_width));
}
else
{
    
$new_height=60;
    
$new_width=(round(($width/$height)*$new_height));
}
$image_p imagecreate($new_width$new_height); // יצירת תמונה חדשה בגודל המתאים.

$image imagecreatefromgif($dir.$file); // טעינת התמונה המקורית להמשך העבודה
$transcolor=imagecolortransparent($image); // שמירת הצבע השקוף הנוכחי בתמונה
// חשוב לשים לב כי במידה ולא קיים צבע נוכחי שקוף, הפונקציה תחזיר -1

if($transcolor>=0// במידה והיה מוגדר צבע מסויים כשקוף בתמונה המקורית, נגדיר בתמונה החדשה את הצבע הזה כצבע הרקע.
{
    
$ar imagecolorsforindex($image,$transcolor); // הוצאת ערכי RGB של צבע הרקע שהוגדר להיות שקוף.
    
$new_trans =imagecolorallocate($image_p,$ar[0],$ar[1],$ar[2]); // הגדרת צבע הרקע של התמונה החדשה להיות הצבע שהוגדר כשקוף בתמונה המקורית.
    
imagecolortransparent($image_p,$new_trans); // נגדיר את הצבע הזה כצבע שקוף
}

imagecopyresampled($image_p$imageround(($imagethumbsize-$new_width)/2), round(($imagethumbsize-$new_height)/2), 00$new_width$new_height,$width$height); // נקטין את התמונה על פי המימדים המתאימים

header('Content-type: image/gif'); // נוציא את התמונה כפלט
imagegif($image_p); 
אשמח לשמוע את דעתכם, ובמידה והשתמשתם בקוד זה.
וכמובן - אם יש שאלות אשמח להבהיר דברים לא ברורים

בהצלחה, דקל
_____________________________________
"מתכנת זה אדם שפותר בעיה שעל קיומה לא ידעת, בדרך שאינך מבין"

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 09:00

הדף נוצר ב 0.06 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר