Avatar billede cmau Nybegynder
17. juni 2007 - 13:54 Der er 10 kommentarer

png fejl i IE 6 ved tabels

Hej Eksperter

Jeg oplever som mange andre fejl med pngbilleder i tidligere version af internet explorer. Jeg har så brugt noget kaldet pngfix, som ordner det for mig, så alt virker fint, bortset fra 2 png billeder, som jeg har i en table som baggrund. Hvad kan jeg gøre ved disse?

                <div style="float:right;">
                    <table style="margin:0;">
                        <tr>
                            <td height="19" width="13" style="padding:0;border-top:0;margin:0;background-color:transparent;background-repeat:no-repeat;" background="images/blog1.png">&nbsp;</td>
                            <td height="19" style="padding:6px 5px 6px 0;border-top:0;margin:0;background-color:transparent;background-repeat:repeat-x;" background="images/blog2.png">
                                <?
                                $query = mysql_query("SELECT * FROM blog ORDER BY id DESC LIMIT 1") or die(mysql_error());
                                $row = mysql_fetch_assoc($query);
                                echo '<a href="index.php?page=blog&amp;id='.$row['id'].'">'.$row['headline'].'</a> ('.mysql_num_rows(mysql_query("SELECT * FROM comments WHERE blogid = '$row[id]'")).')';
                                ?>
                                <a href="index.php?page=blogarchives"><img style="vertical-align:top;" src="images/blogarchives.png" border="" alt="" title="Se gamle blogindlæg!"></a>
                            </td>
                        </tr>
                    </table>
                </div>
Avatar billede pidgeot Nybegynder
17. juni 2007 - 13:59 #1
PNG-fixet har aldrig virket ved baggrunde, da der ikke er mulighed for at sætte filteret på.

Du er nødt til at bruge en PNG uden alpha-channel for at IE viser det korrekt - hvilket ofte vil sige PNG-8, med mindre du bruger et specialiseret værktøj til at lave din PNG om til PNG-24 uden alpha.
Avatar billede cmau Nybegynder
17. juni 2007 - 14:12 #2
puha. Det forstod jeg slet ikke noget af det med alpha. Er det noget du kan forklare dybere? evt givet et link til?
Avatar billede cmau Nybegynder
17. juni 2007 - 14:19 #3
Hmm nu har jeg prøvet at lave det om til nedenstående, men det kun den sidste af dem det virker på, selvom det vist er ens.

<td height="19" width="13" style="padding:0;border-top:0;margin:0;background-color:transparent;background-repeat:no-repeat;filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/blog1.png', sizingMethod='scale');background-image:url(images/blog1.png);">&nbsp;</td>
                            <td height="19" style="padding:6px 5px 6px 0;border-top:0;margin:0;background-color:transparent;background-repeat:repeat-x;filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/blog2.png', sizingMethod='scale');background-image:url(images/blog2.png);">
Avatar billede pidgeot Nybegynder
17. juni 2007 - 14:31 #4
Alpha channel er det der gør at et billede kan være halv-gennemsigtigt, og det er dette IE6 ikke kan finde ud af, men som PNG-fixet retter op på - almindelige PNG-billeder hvor hver pixel enten ikke er gennemsigtig, eller er helt gennemsigtig, kan den sagtens klare.

Det kan ikke forklares anderledes - du er nødt til at lave dine billeder uden den, og det betyder normalt at du er begrænset til 256 farver i hele billedet (PNG-8), i hvert fald hvis du bruger Photoshop (der er noget med at Paint Shop Pro kan, men jeg har aldrig prøvet det).
Avatar billede olebole Juniormester
18. juni 2007 - 13:23 #5
<ole>

pidgeot >> Det er ikke korrekt! PNG-8 indholder sandelig også en alpha-cannel (ellers kunne de ikke være transparente) ... forskellen mellem PNG-8 og -24 er antal bits, den pågældende alpha-channel kan håndtere  ;o)

/mvh
</bole>
Avatar billede pidgeot Nybegynder
18. juni 2007 - 14:30 #6
Det er faktisk ikke rigtigt, Ole. Typisk vil man med en PNG-8 have en tRNS chunk, som angiver 8-bit alpha-værdier for de enkelte palette-indeks (typisk kun et der er sat til 0, resten antages til at være 255), hvilket ikke er det samme som en alpha-channel, da du ikke kan sætte det per pixel (kun per palette-indeks).

Faktisk er det så vidt jeg lige er klar over ikke tilladt at benytte en alpha-channel med en palette. Der er dog ikke noget i vejen for at bruge tRNS i en truecolor/grayscale PNG for at sætte en bestemt farve til at være helt gennemsigtig, og sidst jeg checkede var det noget IE6 kunne finde ud af.
Avatar billede olebole Juniormester
18. juni 2007 - 14:48 #7
Du kan sagtens have en PNG-8 som RGBA - resten kan du læse her:
    http://www.libpng.org/pub/png/spec/1.2/PNG-Contents.html
Avatar billede pidgeot Nybegynder
18. juni 2007 - 15:23 #8
Ja, men det fremgår også af det spec at det sker med tRNS, der ganske enkelt gør bevirker at det er paletten der er RGBA - billedet er ikke RGB palette + alpha.

Det er korrekt at grayscale (der jo ret beset også er PNG-8) kan have alpha, men det har jeg overhovedet ikke påstået ikke var tilfældet - grayscale bruger nemlig ingen palette :)

http://www.libpng.org/pub/png/spec/1.2/PNG-DataRep.html#DR.Image-layout
Avatar billede olebole Juniormester
19. juni 2007 - 11:42 #9
Okay ... så er vi enige  =)
Avatar billede cmau Nybegynder
04. juli 2007 - 18:31 #10
Fik aldrig helt fat i hvad i ville have mig til at gøre? Jeg fik det jo til at virke med det ene billede (Forstår ikke hvorfor det andet ikke ville). Kan i sige mig det?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester