# PNG

### מתוך ויקיפדיה, האנציקלופדיה החופשית

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

PNG (ראשי תיבות: Portable Network Graphics, "גרפיקה ניידת לרשת") הוא פורמט תמונה דיגיטלית המשתמש בדחיסה ללא איבוד נתונים. יוצרי הפורמט קבעו שיש לבטא אותו "פינג", אך בפועל קוראים את ראשי התיבות לאותיותיהן בדרך כלל, קרוב לוודאי כדי למנוע התנגשות עם כלי הרשת ping. סיומת קובצי התמונה בפורמט PNG היא png לרוב, ומציין ה-MIME של הפורמט הוא image/png.

## [עריכה] היסטוריה והתפתחות

בשנת 1995 הודיעה חברת יוניסיס על כוונתה לגבות תשלום עבור השימוש באלגוריתם הדחיסה LZW, שבו משתמש, בין היתר, פורמט GIF. צעד זה הוליד את הצורך ליצור תחליף חופשי ממגבלות רישוי עבור GIF, וכך הוחל ביצירת PNG. היוצרים החליטו באותה הזדמנות לחבר פורמט טוב מ-GIF גם מבחינות אחרות, למשל על-ידי הסרת המגבלה של 256 צבעים.

- גרסה 1.0 של מפרט PNG יצאה ב-1 ביולי 1996 והופיעה אחר כך בתור RFC 2083, וב-1 באוקטובר נהייתה לתקן של ה-W3C.

- גרסה 1.1, עם כמה שינויים קטנים ושלושה גושים נוספים, יצאה ב-31 בדצמבר 1998.

- גרסה 1.2 הוסיפה גוש אחד. היא יצאה ב-11 באוגוסט 1999.

- PNG הוא כעת תקן בינלאומי (ISO/IEC 15948:2003), וגרסת W3C של זה יצאה ב-10 בנובמבר 2003. התקן הזה שונה במעט מאוד מגרסה 1.2 ואין בו גושים חדשים.

## [עריכה] פרטים טכניים

### [עריכה] פתיח הקובץ

כל קובץ PNG מתחיל בחתימה באורך 8 בייט. ערכיהם של הבייטים בהקסדצימאלית הם 89 50 4E 47 0D 0A 1A 0A, כל אחד לצורך מטרה מפורשת:

- 89 - הסיבית העליונה בו 1, וכך יש בו כדי להצביע על העברה במערכת שמאפסת אותה.
- 50 4E 47 - האותיות PNG ב-ASCII, לצורך זיהוי בכלי טקסט.
- 0D 0A - סיום שורה בפורמט של DOS, לצורך זיהוי של המרה מסיום שורה בפורמט של DOS לפורמט של Unix (כלומר שהקובץ הורד במצב טקסט במקום מצב בינארי).
- 1A - תו שעוצר את תצוגת הקובץ ב-DOS (למשל כשכותבים type image.png בחלון DOS; אינו עובד בכל גרסאות DOS, ראוי לציין).
- 0A - סיום שורה בפורמט של Unix, לצורך זיהוי של המרה מסיום שורה בפורמט של Unix לפורמט של DOS (כלומר שהקובץ הורד במצב טקסט במקום מצב בינארי).

### [עריכה] גושים בתוך הקובץ

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

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

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

#### [עריכה] גושים הכרחיים

את הגושים ההכרחיים חייבת כל תוכנת פריסה להכיר כדי לקרוא ולהציג את קובץ ה-PNG:

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

- PLTE - כולל את מפתח הצבעים (הפלטה, palette), בתמונות שיש להן 256 צבעים או פחות.

- IDAT - כולל את מפת הסיביות של התמונה עצמה. אפשר שזו תשתרע על פני כמה גושי IDAT.

- IEND - חותם את הקובץ. גוש זה ריק מכל נתונים.

#### [עריכה] גושי עזר

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

- tRNS - ערכי שקיפות לצבעים. בתמונות גוני אפור (סוג צבע 0) וצבע RGB (סוג צבע 2) יש בגוש זה ערך אחד המציין צבע אחד בתמונה שהוא שקוף לגמרי. בתמונות עם מפתח צבעים (סוג צבע 3) יכולים להיות ערכים למפתחות רבים, וב-255 דרגות של שקיפות.
- pHYs - הגודל הפיזי של הפיקסלים. גוש זה מציין את מספר הפיקסלים למטר בתמונה, אופקית ואנכית. למשל ערך של 3780 3780 שווה בקירוב ל-96 פיקסלים לאינץ' (הגודל במערכת חלונות). לחילופין, הוא יכול לציין את היחס בין אורך כל פיקסל לרוחבו.
- cHRM - פרמטרים לניהול צבעים. גוש זה מסייע לקביעת מרחב הצבעים של התמונה.
- gAMA - הגאמה של התמונה, כלומר היחס בין הדגימות שבתמונה לבין עוצמת פלט התצוגה (בתוצאה הנראית לעין: בהירות התמונה).
- iCCP - פרופיל צבע המוטמע בתוך התמונה. זהו עזר יותר מתקדם לניהול צבעים מאשר גוש cHRM.
- sRGB - גוש המציין שהצבעים שבתמונה הם לפי מרחב הצבעים הנפוץ sRGB. הוא מכיל, בנוסף, בייט אחד המציין את ייעוד תצוגת התמונה (תצלום, לוגו, דיאגרמה וכו').
- sBIT - מספר הסיביות לערוץ שבתמונה המקורית. למשל גוש sBIT עם ערכים של 6 עבור שלושת צבעי היסוד מציין שהתמונה המקורית קודדה במרחב עוצמת צבעים של 0 עד 63 לכל ערוץ, במקום המרחב 0 עד 255 הרגיל. מכיוון שפורמט PNG תומך רק בערכים של חזקות של 2 למספר הסיביות לערוץ, גוש sBIT מאפשר לשחזר עומקי סיביות לא שגרתיים ללא איבוד נתונים.
- hIST - היסטוגרמה של התמונה, כלומר רשימה של התדירות שבה מופיע כל צבע. גוש זה נועד לתמונות בעלות מפתח (סוג צבע 3). למערכות תצוגה בעלות מגבלה של צבעים מסייע הגוש לברור את הצבעים החשובים יותר.
- sPLT - מפתח מומלץ. הגוש הזה נותן אפשרות למפתח צבעים מסוים אם אי אפשר להציג את כל הצבעים. הגוש נועד לכל סוגי התמונות, לא רק לתמונות בעלות מפתח, והוא מכיל גם ערכי שקיפות (אלפא, מ-0 עד 255) ותדירות לצבעים (בכך הוא משלב את התכונות של PLTE,‏ tRNS ו-hIST כולן יחד).
- bKGD - צבע רקע לתמונה. אם התמונה מכילה פיקסלים שקופים ולא מצוין לה צבע רקע בשום דרך, אז גוש זה יכול לספק את צבע הרקע שבו יוצגו הפיקסלים הללו.
- tEXt - מידע טקסטואלי לתמונה. מכיל מילת מפתח ולאחריה הטקסט עצמו. הטקסט מוגבל לערכת התווים ISO 8859-1.
- zTXt - כמו tEXt, אך הטקסט שאחרי מילת המפתח דחוס. אותה ערכת תווים.
- iTXt - טקסט בינלאומי. הגוש מכיל את מילת המפתח באנגלית, ואחריה בייט המציין אם הטקסט דחוס או לא, ואחריו תג לשפה (כמו he לעברית; התג אינו חובה), ואחרי כן מילת המפתח המתורגמת (גם כן אינה חובה) ולבסוף הטקסט בשפה האחרת. מילת המפתח המתורגמת והטקסט מקודדים בקידוד UTF-8 של יוניקוד.
- tIME - גוש המציין את זמן השינוי האחרון של התמונה (לא של יצירתה הראשונה; לכך משתמשים במילת המפתח Creation Time בגוש tEXt).

### [עריכה] סוג הצבע ועומק הסיביות

סוגי הצבע שפורמט PNG מסוגל לאחסן הם אלה:

הטווח המלא של אפשרויות צבע
עומק סיביות לערוץ | 1 | 2 | 4 | 8 | 16
--- | --- | --- | --- | --- | ---
תמונה בעלת מפתח (סוג צבע 3) | 1 | 2 | 4 | 8 |
תמונת גוני אפור (סוג צבע 0) | 1 | 2 | 4 | 8 | 16
תמונת גוני אפור עם אלפא (סוג צבע 4) |  |  |  | 16 | 32
תמונות אדום-ירוק-כחול (RGB; סוג צבע 2) |  |  |  | 24 | 48
תמונת אדום-ירוק-כחול עם אלפא (RGBA; סוג צבע 6) |  |  |  | 32 | 64

- תמונת גוני אפור (סוג צבע 0)
- תמונת אדום-ירוק-כחול (RGB, או truecolor; סוג צבע 2)
- תמונות גוני אפור עם ערוץ אלפא (סוג צבע 4)
- תמונת אדום-ירוק-כחול עם ערוץ אלפא (סוג צבע 6)
- תמונה עם מפתח צבעים (סוג צבע 3)

עומק הסיביות יכול להיות מן 1 (סיבית אחת לפיקסל) עד 64. בתמונות עם מפתח צבעים יכול עומק הסיביות להיות 1 (צבע אחד או שניים; בדרך כלל לתמונות שחור-לבן), 2 (שלושה או ארבעה צבעים; דיאגרמות פשוטות ותמונות CGA),‏ 4 (עד 16 צבעים) או 8 (עד 256 צבעים). בתמונת גוני אפור (סוג צבע 0) יכול עומק הסיביות להיות 1,‏ 2,‏ 4,‏ 8 או 16 (האפשרות הנפוצה ביותר היא 8). בתמונת RGB יכול עומק הסיביות להיות 24‏ (8 סיביות לכל צבע יסוד; זוהי האפשרות הנפוצה ביותר) או 48‏ (16 סיביות לכל צבע יסוד). בתמונות גוני אפור עם ערוץ אלפא (סוג צבע 4) יכול עומק הסיביות להיות 16‏ (8 סיביות לאפור ו-8 סיביות לערוץ האלפא) או 32‏ (16 סיביות לאפור ו-16 סיביות לערוץ האלפא), ובתמונת RGB עם ערוץ אלפא - 32 או 64. התקן קובע שכל המקודדים צריכים לקרוא את כל הצירופים כהלכה, אך בפועל אין זה תמיד המצב, והרבה עורכי תמונות מסוגלים ליצור רק חלק קטן מהצירופים.

בתמונה עם מפתח צבעים מאוחסנים הצבעים עצמם בפורמט RGB בעומק 8 סיביות. אסור שיהיו במפתח יותר רשומות מאשר עומק הסיביות מתיר, אך מותר שיהיו פחות (למשל 90 רשומות בתמונה בעלת 90 צבעים, אף שאפשר עד 256).

### [עריכה] שקיפות

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

### [עריכה] דחיסה

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

### [עריכה] סירוג

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

### [עריכה] הנפשה

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

## [עריכה] תמיכת תוכנה

### [עריכה] תמיכה מצד עורכי תמונה

מבין עורכי התמונה יש שהוסיפו תמיכה ב-PNG כלאחר-יד, כביכול, וכאלה שערוכים יותר להתמודד עם תכונות הפורמט. למשל תוכנת הצייר של חלונות XP אינה תומכת כלל בשקיפות, ומייצאת ל-PNG בפורמט RGB בלבד. לעומתה, GIMP תומכת בשקיפות ובייצוא של כל עומקי הסיביות פרט לאלה המשתמשים ב-16 סיביות לדגימה (למשל RGB ב-48 סיביות לפיקסל). חלק מעורכי התמונה אינם מיישמים את רמת הדחיסה המיטבית לתמונות PNG, ואין בנמצא שום עורך תמונה שיודע לכתוב את כל סוגי הגושים (כמו iTXt - נכון לשנת 2006, הדרך היחידה לכתוב גוש iTXt היא באמצעות תוכנת שורת הפקודה pngcrush).

### [עריכה] תמיכה מצד דפדפנים

למרות מטרתה הראשונית של PNG, לספק פורמט תמונה חופשי, עדיין משמש פורמט GIF יותר, מהסיבות הבאות:

- המחשבה המוטעית ש-PNG מניב קבצים גדולים יותר מ-GIF, משום השוואת קובצי GIF לגרסאות PNG ב-24 סיביות.
- חוסר התמיכה של אינטרנט אקספלורר בשקיפות משתנה. גרסה 7 אמורה לפתור את הבעיה הזו.
- חוסר התמיכה של PNG בהנפשה. ההנפשה משמשת בפרסומות ובפורומים.
- חוסר המוטיבציה להחליף פורמט מוכר (השוו להישארותו של MP3 למרות קיומם של Vorbis וכו').

## [עריכה] השוואה לפורמטים אחרים

### [עריכה] השוואה ל-GIF

- קובץ PNG כמעט תמיד קטן יותר ממקבילו בפורמט GIF (אבל זאת בתנאי שמשווים עומק סיביות זהה בשניהם).
- GIF מאפשר רק שקיפות בינארית (צבע אחד שקוף לגמרי), ואילו PNG מאפשר שקיפות משתנה (צבעים רבים ובדרגות שקיפות שונות).
- GIF מוגבל לתמונות עם מפתח, ובעומק צבע עד 8 סיביות, כלומר אינו יכול להכיל יותר מ-256 צבעים. PNG יכול להכיל תמונות ב-24 סיביות (מעבר למספר הגוונים שהעין יכולה להבחין בהם) ואפילו 48 סיביות (לצורך טיפול בתצלומים ללא פוסטריזציה).
- GIF תומך בהנפשה. PNG מוגבל לתמונה יחידה בקובץ.

### [עריכה] השוואה ל-JPEG

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

### [עריכה] השוואה ל-TIFF

- תומך בשיטת דחיסה וקידוד רבות. החיסרון, כמובן, הוא שאין ביטחון שתוכנה מסוימת תוכל לקרוא קובץ TIFF מסוים. PNG, לעומת זאת, אינו מותיר למקודדים ברירות רבות, וקובץ PNG שאינו קריא אינו תקני.
- יכול להכיל תמונות במודל CMYK, המיועד להדפסה בצבע. PNG מוגבל למודל RGB.
- יכול להכיל כמה תמונות בתוך קובץ אחד. זו אינה הנפשה כמו ב-GIF, אלא דומה יותר לשקפים של מצגת. PNG מוגבל לתמונה יחידה בקובץ.
- לדחיסת טקסט שחור-לבן, אלגוריתם CCITT G4 של TIFF יותר טוב מאשר הדחיסה של PNG, וזה, יחד עם האפשרות להכיל מספר תמונות בקובץ אחד, הופך את TIFF ליותר מתאים לאיחסון סריקות של דפים.

מקור: http://he.wikipedia.org../../../p/n/g/PNG_5550.html

קטגוריה: תוכנה

##### Views

- ערך
- שיחה
- גרסה נוכחית

##### קהילה

- שער הקהילה
- עזרה
- דלפק ייעוץ
- מזנון
- יצירת קשר
- ספר אורחים

##### חיפוש

##### שפות אחרות

- English
- Alemannisch
- Català
- Česky
- Dansk
- Deutsch
- Esperanto
- Español
- Euskara
- Suomi
- Français
- Galego
- Magyar
- Italiano
- 日本語
- 한국어
- Nederlands
- Norsk (bokmål)
- Polski
- Português
- Русский
- Slovenčina
- Slovenščina
- Svenska
- ไทย
- Türkçe
- Tiếng Việt
- 中文