מאי 292011
 

בסך הכל רציתי לשמור תמונה. ערכתי אותה (בעזרת הצייר של Windows או תוכנה אחרת), ואז שאלה אותי התוכנה בתמימות מעושה: איך אתה רוצה לשמור את התמונה שלך?

היא דווקא הציעה לי מגוון אפשרויות, מ-BMP ו-TIFF ועד ל-JPEG, ואפילו אמרה משהו על GIF ו-PNG. רק דבר אחד היא לא אמרה לי: באיזו אפשרות כדאי לבחור.

שמירה בשם... אבל באיזה סוג?

שמירה בשם... אבל באיזה סוג?

למה יש כל-כך הרבה סוגים?

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

ניקח לדוגמה פורמט בשם ביטמאפ (Bitmap): אפשר לשמור תמונה כביטמאפ שחור-לבן, ואז הצבעים שבתמונה יוחלפו בשחור או בלבן. לדוגמה, אם ניקח את התמונה הבאה:

תמונה צבעונית

ונשמור אותה כתמונה בשחור-לבן, היא תיראה כך:

תמונה בשחור-לבן

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

תמונה בששה-עשר צבעים

ויש גם ביטמאפ שיכול לשמור 256 צבעים. כך תיראה התמונה שלנו אם נשמור אותה בפורמט הזה:

תמונה ב-256 צבעים

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

התמונה המקורית

למה לי להגביל את מספר הצבעים?

כל נקודת צבע בתמונה נקראת פיקסל. כל המידע על התמונה שמור בקובץ, משהו בסגנון "הפיקסל השמאלי-העליון של התמונה צבוע באדום, הפיקסל שמימינו צבוע באדום בהיר יותר, הפיקסל שאחריו לבן" וכו'. בתמונה בשחור-לבן, כל פיקסל יכול להיות אחד משני צבעים – שחור או לבן. אם יש לנו ששה-עשר צבעים, הפיקסל יכול להיות צבוע בצבע מס' 1, או צבע 2, וכן הלאה עד 16. לכן, כל פיקסל מכיל שתי ספרות של צבע – בין 00 ל-16 (הפיקסלים נשמרים למעשה בפורמט קצת שונה, אבל הרעיון זהה). בתמונה בצבע מלא, יש יותר מ-16 מיליון צבעים (16,777,216, ליתר דיוק), ולכן כל פיקסל תופס שמונה ספרות (ושוב – לא בדיוק, אבל זה הרעיון). כלומר, ככל שמספר הצבעים שיש בתמונה גדול יותר, יש יותר מידע לשמור, ולכן קובץ התמונה יהיה גדול יותר.

לפעמים גם אין צורך בכל-כך הרבה צבעים: פקס, לדוגמה, נשלח ממילא בשחור-לבן, ולכן שמירה בצבע תהיה סתם בזבזנית – שמירה של תמונת הפקס בפורמט שחור-לבן תהיה יותר חסכונית, בלי לאבד שבריר מידע מהתמונה המקורית. באופן דומה, ציור שהילד יצר בעזרת תוכנת הצייר של Windows עם לוח הצבעים המוגבל שהיא מציעה, ניתן לשמור בפורמט של 16 צבעים. תמונה שצולמה במצלמה נרצה לשמור במלוא הדרה – בפורמט ביטמאפ, לדוגמה, נשתמש ב-24 ביט (המאפשרים, כפי שאמרנו, 16,777,216 צבעים וגוונים שונים).

דחיסה

אם נשמור תמונות כרשימה של נקודות וצבעים, נקבל קובץ ענקי – לכל פיקסל בתמונה יש צבע משלו, ולכן כל שורת פיקסלים שתתווסף לתמונה תגדיל אותה באופן משמעותי. הפתרון הוא לכווץ. סוג אחד של כיווץ הוא שמירה של המידע בצורה קצרה יותר, לדוגמה – שמירת המידע של רצף: אם יש לי מספר פיקסלים ירוקים, במקום לשמור "הפיקסל הראשון ירוק, הפיקסל השני ירוק, הפיקסל השלישי ירוק" אפשר לשמור את המידע כ-"מפיקסל 1,  יש שלושה ירוקים".

סוג אחר של כיווץ מרשה לעצמו "לאבד" מידע מדי פעם – אם יש פתאום פיקסל שמפריע לדחיסה, פורמט כזה יכול להתעלם ממנו. לדוגמה, אם יש שני פיקסלים כחולים, אחריהם אחד בגוון כחול מעט יותר בהיר ושוב פיקסל כחול, שמירת התמונה בפורמט "מאבד" יכולה לשנות מעט את התמונה כך שארבעת הפיקסלים יהיו באותו הצבע, וכך לשמור את התמונה כ-"4 פיקסלים כחולים" – חסכון משמעותי במחיר של "זיוף" בתמונה.

הנה דוגמה:

 

תמונה ללא אובדן מידע

תמונה ללא אובדן מידע

אם נשמור את התמונה הזאת בפורמט שמאבד מידע (אבל שומר על קובץ קטן יותר), כמו JPEG, נקבל את התמונה הבאה:

 

תמונה עם אובדן מידע

תמונה עם אובדן מידע

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

אז מה עושים?

אנשים מאוד חכמים יושבים וחושבים על דרכים לדחוס את המידע, והרעיונות שלהם מוצאים את דרכם לפורמטים. כך, בין הפורמטים השומרים את כל המידע, יש את פורמט ביטמאפ, פורמט בשם GIF, עוד אחד בשם PNG, ועוד ועוד – כל אחד דוחס את המידע באופן אחר. בין הפורמטים המאבדים, בולט אחד בשם JPEG, המוכר גם כ-JPG.

הפורמט המוביל כיום הוא JPEG – ההוא שמאבד צבעים מדי פעם. על האובדן הוא מפצה בדחיסה טובה, שגורמת לתמונה של 10 מיליון פיקסלים בצבע מלא, שאמורה היה לתפוס קובץ בגודל 30 מגה, לתפוס בערך עשירית מזה. כל המצלמות הדיגיטליות תומכות בפורמט JPEG (ועכשיו אתם גם יודעים למה). ואם אתם עדיין מודאגים מהעיוותים בתמונה, אתם יכולים להירגע – JPEG מאבד בדרך-כלל מעט מאוד מידע, והסטיקר למעלה הוא דוגמה מאוד קיצונית (עבדתי קשה כדי לגרום לאלגוריתם לעבוד גרוע, רק בשביל ההדגמה).

לפעמים עדיף להשתמש בפורמט שומר-מידע, גם אם הקובץ יצא גדול יותר. לדוגמה – אם יש לכם קווים דקים בתמונה (כמו אותיות), פורמט מאבד עלול לעוות אותם מספיק כך שהיא "תיראה רע". PNG הוא פורמט שומר-מידע שמצליח לדחוס תמונות לא רע. בקבצים קטנים, הוא אפילו גיע לדחיסה טובה יותר מזו של JPEG:

PNG מנצח את JPEG בקבצים קטנים

PNG מנצח את JPEG בקבצים קטנים

תמונות בשחור-לבן בלבד, כמו פקסים, עדיף לשמור בפורמט בשם TIFF, שיודע גם לשמור בשני צבעים בלבד (ובכך לחסוך במקום), גם לדחוס אותן כך שהן יהיו מאוד קטנות, ואפילו לשמור מספר עמודי פקס בקובץ יחיד, כך שנוכל לשלוח את כולו בלי לשכוח עמודים.

במאמר הבא, נלמד על תוכנות נוחות לעבודה עם קבצים.

מאי 302010
 

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

חלק קצת יותר "כבד" היה יצירת דפי המידע – מי אני, מה אני עושה פה, ובעיקר – איך זה יכול לעזור לכם, הקוראים. אבל גם כאן היו לי כבר רעיונות מוכנים, ובחלק מהמקרים אפילו רשימות שלמות (עמוד ההרצאות, לדוגמה, הוכן מאימיילים ששלחתי בעבר לאנשים שונים. יחי העתק-הדבק!).

וזהו. האתר חי ונושם, אתם מוזמנים לערוך סיבוב היכרות, ואם אתם צריכים עזרה עם האתר שלכם (או תוהים האם אתם בכלל רוצים/צריכים אתר), דברו איתי ואשמח לתרום מנסיוני.

מאי 272010
 

אחד האתגרים הניצבים בפני המשתמש הישראלי הוא תמיכה של תוכנות בעברית. אתה מתקין תוכנה תוך תפילה חרישית שהכותב היה מודע לזה שיש שפות אחרות (פונטים, תמיכה בתרגום), שיש מדינות שונות (אזורי זמן), פורמטים שונים (הידעתם שביפן התאריך 10/11/12 הוא בעצם השנים עשר בנובמבר 2010?), והנעלם הגדול מכולם: האם ידוע (ואכפת) למפתח האלמוני שיש שפות הנכתבות מימין לשמאל?

התחלתי לחפש ערכות עיצוב התומכות בשפות הנכתבות מימין לשמאל (RTL), ומצאתי אחת שעושה זאת בגדול: לא רק תמיכה בשפה המוזרה שלנו, אלא שליטה מלאה בכל מאפייני העיצוב. קבלו את Suffusion!

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

ותודה לסיונטאן על הערכה.