02-11-2004, 02:59
|
|
|
חבר מתאריך: 20.02.03
הודעות: 2,396
|
|
הסבר
בתגובה להודעה מספר 1 שנכתבה על ידי ococ שמתחילה ב "שלום זקוק לעזרה בכתיבת פונקציה לטיפול בתמונות- (הקטנת תמונות)"
מכיוון שאתה לא המתכנת הראשון שמתקשה בזה החלטתי להסביר זאת צעד אחרי צעד.
למרות שהנושא של עבודה עם תמונות הוא קשה, אני לא מתכוון לתת כאן פיתרון אלא הסבר איך
לבצע את זה.
כל הנאמר בתגובה זו מוגן בזכויות יוצרים. כל הזכויות שמורות לדקל מנהל פורום PHP.
אין להעתיק / להפיץ / לשנות בכל אמצעי, אלקטרוני או מכני את הכתוב בתגובה זו, ללא אישור
בכתב מראש מכותבו.
1) ניקח תמונה רחבה:
2) ניצור משטח עבודה חדש בגודל של התמונה המוקטנת אותה אנו רוצים ליצור (המשטח עבודה מסומן באמצעות הריבוע האדום):
3) נקטין את התמונה המקורית לגובה של משטח העבודה החדש אולם נשמור על היחס בין הגובה לרוחב:
4) נדביק את התמונה המוקטנת שלנו, אולם לא בנקודה (0,0) אלא "מחוץ" למשטח העבודה, על מנת להשיג את אפקט המירכוז והחיתוך:
שתי נקודות שרצוי לשים לב אליהן:
- הרוחב החדש של התמונה המוקטנת הינו 133. התמונה שלנו צריכה להיות ברוחב 100 ולכן נשאר לנו 33- כלומר 33/2 לכל צד, וכיוון שפיקסל הינו מספר שלם הגענו ל-17.
- השטח המסומן באדום זה שטח העבודה שלנו והצדדים הנמצאים מחוץ לו אינם חלק ממנו, אולם השארתי אותם על מנת להמחיש את הרעיון.
התמונה שקיבלנו תיראה ככה:
התמונה שקיבלנו הינה "תמונת אצבע" או באנגלית thumbnail אשר רק הוקטנה ולא עוותה.
שימו לב כי את השלב השלישי (הקטנת התמונה המקורית) אנו בעצם לא מבצעים, ומי שמבצעת את השלב הזה היא הפונקציה imagecopyresampled.
היישום הוא ע"י לקיחת ההסבר והפיכתו לקוד. זה באמת לא הדבר הפשוט ביותר שקיים, אולם סתם לקחת קוד שמבצע את זה לדעתי לא ייתן למתכנת שום דבר.
בהצלחה, דקל
_____________________________________
"מתכנת זה אדם שפותר בעיה שעל קיומה לא ידעת, בדרך שאינך מבין"
|