IE un PNG krāsu toņu problēmas
2. July, 2007, 10:42 PamācībasProblēmas apraksts
Šoreiz nerunāšu par PNG caurspīdīguma problēmu uz IE6 pārlūka, bet gan
par tādu varbūt mazāk populāru, bet kaitinošu problēmu, kas ietekmē gan IE6,
gan IE7. Abi šie pārlūki reizēm nepareizi attēlo PNG attēlu krāsu toņus.
Mazs piemērs (Šis attēls ir salikts kopā no diviem.
Pa kreisi ir parasts GIF fails, bet pa labi PNG). Uz FF
un Operas nevajadzētu redzēt atšķirību, bet uz IE diezgan labi var redzēt, ka
kreisās puses krāsas tonis atšķiras no labās puses toņa. Labā puse ir nedaudz
tumšāka.


Tiem, kam nav iespēju apskatīt caur IE, ekrānšāviņš:

Kāpēc tā notiek ?
PNG formāts atbalsta Gammas korekciju.
Gammas korekcija mēģina nodrošināt, lai attēls rādītos pēc iespējas
vienādākā tonī gan uz dažādām iekārtām (mac, pc u.c.), gan starp dažādām
programmām. Reāli gammas korekcija PNG failā izpaužas vienkārši kā ciparisks
koeficients, kas programmai (vai jebkam citam, kas attaino PNG) būtu jāņem
vērā, rēķinot toņu spilgtumu. Tas tā - rupji runājot un neiedziļinoties
pilnīgā darbības mehānismā.
Problēma rodas tad, kad IE nepareizi interpretē šo koeficientu.
Risinājums
Risinājums ir izdzēst no PNG faila attiecīgo koeficientu. To
var izdarīt pavisam vienkārši. Droši vien pastāv daudz dažādu progammu, kas
ļauj to izdarīt, bet es izcelšu TweakPNG. Tā ir bezmaksas, ir pavisam maziņa
un strādā nevainojami. Ja kādam tas ir pluss, tad pieminēšu, ka tā
nav arī jāinstallē.
Tātad lejupielādējam TweakPNG.
Pēc attarhivēšanas atveram Tweakpng.exe, un ar File->Open atveram
PNG failu, ko gribam patīrīt. Tam vajadzētu izskatīties aptuveni šādi:

Mums interesē Chunk ar nosaukumu gAMA.
Nospiežam uz tā ar labo peles pogu un no izlecošās izvēlnēs izvēlamies
Delete. Tas arī viss. Saglabājam failu un veram programmu ciet.
Lūk atkal divi faili: pa kreisi GIF, pa labi PNG. Atšķirība toņa spilgtumā
vairs nav redzama:




2. July, 2007, 10:52
Risinajums: Nevajag taisīt PNG ar Fotošop.
Jā tāds grēks ir pieļauts, tad visi PNG japārseivo ar GIMP!
2. July, 2007, 10:53
Šādam risinājumam tomēr ir viens trūkums - šausmīgi manuāli tas process notiek. Ja tev, piemēram, jūzeri augšupielādē kaut kādus failus PNG formātā, tu nevari gaidīt, ka viņi tos paši attīrīs, tāpat veikt attīrīšanu servera galā manuāli varētu būt stulbi. Līdz ar to vajadzētu kaut kādu servera puses manipulāciju - kaut vai no komandu rindas darbināmu TweakPNG ekvivalentu, kurš ar gammas attīrīšanas parametru nekavējoties tiek uzgrūzts virsū augšupielādētajam PNG failam.
Jautājums autoram: vai šāds softs ir pieejams?
(man personīgi patlaban pēc tāda vajadzības nav, bet - ko var zināt, varbūt kādreiz tāda radīsies)
2. July, 2007, 10:58
imho ar PHP5 vai pngcrush šitā visa draza pazūd.
2. July, 2007, 11:01
bh, jā, var darīt visādi.
Raimonds Kaže, nešaubos, ka ir command line programmas ar ko to var darīt, bet nepateikšu nevienu. Šo rakstu vairāk rakstīju domājot par tiem cilvēkiem, kas griež pa daļām web dizainus, lai atkal saliktu tos atpakaļ HTML kodā. Tad var atļauties tos dažus PNG failus parediģēt ar roku. Kā arī - šaubos vai ir tik svarīgi nodrošināt precīzu toni bildei, ko būtu augšupielādējis lietotājs, piemēram, draugiem.lv portālā galerijās.
2. July, 2007, 11:11
png formāts ir diezgan vienkāršs, lai pats uzrakstītu tā gamma chunk’a izvākšanu. png fails sastāv no daudziem chunk’iem, kuram katram ir 4baitu headers un aiz tā 4baitu izmērs. Vajag tikai izvākt ārā šo headeri, izmēru un n-baitus aiz tā un viss.
21. August, 2007, 15:39
un kā var risināt problēmu ar png caurspīdīgumu uz Explorer?
21. August, 2007, 17:15
ray, tas ir diezgan plašs temats, kur izvērsties, tāpēc iedošu tev vienu noderīgu saiti :)
http://www.google.lv/search?hl=lv&q=ie+png+transparency
8. June, 2008, 17:11
Tieši šodienu biju veltijis veinam png failam, kas uz ie ienjeemaas daudz tumshaaks. Tagad viss kartiba. tnx, ljoti paliidzeeja.
20. September, 2008, 18:37
[…] TweakPNG - neliela programma ar ko pielabot PNG failu metadatus. Izmantoju tikai lai dzēstu Gamma headeri PNG failiem. Par to var palasīt šeit. […]