Avatar billede thorus Nybegynder
21. oktober 2004 - 23:49 Der er 22 kommentarer og
1 løsning

PNG fix dk fejl

Jeg har nogen png filer som skal vises på en side. men pga. der er æøå i kan den png fix jeg har fået fat i, ikke klare det.

<script type="text/javascript">

if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
    document.writeln('<style type="text/css">img { visibility:hidden; } </style>');
    window.attachEvent("onload", fnLoadPngs);
}

function fnLoadPngs() {
    var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
    var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);

    for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--) {
        if (itsAllGood && img.src.match(/\.png$/i) != null) {
            var src = img.src;
            img.style.width = img.width + "px";
            img.style.height = img.height + "px";
            img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')"
            img.src = "blank.gif";
        }
        img.style.visibility = "visible";
    }
}

</script>


den laver bredten på png'en til 28 px. og ikke eks. 91 som den skal med den png jeg har. alle andre png virker.
Avatar billede pride_boy Nybegynder
21. oktober 2004 - 23:58 #1
<script type="text/javascript">

if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
    document.writeln('<style type="text/css">img { visibility:hidden; } </style>');
    window.attachEvent("onload", fnLoadPngs);
}

function fnLoadPngs() {
    var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
    var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);

    for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--) {
        if (itsAllGood && img.src.match(/\.png$/i) != null) {
            var src = img.src;
            img.style.width = img.width + "91";
            img.style.height = img.height + "91";
            img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')"
            img.src = "blank.gif";
        }
        img.style.visibility = "visible";
    }
}

</script>
Avatar billede olebole Juniormester
21. oktober 2004 - 23:59 #2
<ole>

Fejlen er, du bruger skandinaviske tegn i filnavne. Det bør man _aldrig_ bruge på WWW. Det eneste fornuftige at gøre er at ændre filnavnene  :)

/mvh
</bole>
Avatar billede olebole Juniormester
22. oktober 2004 - 00:02 #3
pride-boy >> Ehhhhh ......... hvad skulle det dog gøre godt for?
Avatar billede roenving Novice
22. oktober 2004 - 00:04 #4
Jeg kan heller ikke se formålet med at skrive ukorrekt css-kode i style-properties, samt tillægge alle images en ekstra højde og bredde, når det kun er en ekelt, der er problemer med ...
Avatar billede thorus Nybegynder
22. oktober 2004 - 00:09 #5
dvs. at man ikke kan lave en fix?
Avatar billede olebole Juniormester
22. oktober 2004 - 00:15 #6
roenving >> Spørgeren er pisket nødt til at sørge for, hans billede har fået sat 'layout' for at hans filter kan virke. Det kan f.eks. gøres ved explicit at sætte en bredde eller højde på billedet  :)
Avatar billede thorus Nybegynder
22. oktober 2004 - 00:16 #7
har fixede det. vågnede lige pga. det olebole skrev.
Avatar billede olebole Juniormester
22. oktober 2004 - 00:16 #8
thorus >> jo, fix'et, at du bruger HTTP-protokollen korrekt og dermed bruger det internationale tegnsæt til fil-navne  :)
Avatar billede olebole Juniormester
22. oktober 2004 - 00:18 #9
... mellemrum i filnavne er en anden ting, der kan skabe problemer. Undgå dem for din egen (og dine brugeres) skyld  ;o)
Avatar billede roenving Novice
22. oktober 2004 - 00:18 #10
>>olebole, min kommentar gik på pride_boys ændring af 'px' til '91' ...
Avatar billede olebole Juniormester
22. oktober 2004 - 00:18 #11
roenving >> Så forstår jeg _meget_ bedre  ;o)
Avatar billede olebole Juniormester
22. oktober 2004 - 00:20 #12
thorus >> betyder det, du ønsker et svar?  :)
Avatar billede thorus Nybegynder
22. oktober 2004 - 00:26 #13
ja tak. men har 2 små sp? til.. da jeg gik igang med at lave det her png script troede jeg ikke det var så besværligt.

Opret Længden på png filen, der har jeg brugt:
$count = strlen($line);
$count = $count * 7;
$im = imagecreatetruecolor ($count, 20);
Hvordan finder jeg den rigtige længde på filen? har problemer med lange ord at de ikke fylder hele png'en pga. den ukorrekte længde udregning.


hvordan jeg sørge for at en png fil bliver remade hvergang et script loades?
Avatar billede olebole Juniormester
22. oktober 2004 - 00:33 #14
Jeg forstår ikke rigtig dit problem ... prøv igen  :)
Avatar billede thorus Nybegynder
22. oktober 2004 - 00:39 #15
Problem 1
jeg har et script hvor jeg opretter png filer, når jeg opretter en png fil så vælger jeg en længde på png filen. Er det muligt at gøre så png filen kun bliver den længde teksten har.


jeg bruger på nuværende tidspunk:

$count = strlen($line);
$count = $count * 7;
$im = imagecreatetruecolor ($count, 20);

og det laver ukorrekt længde
Avatar billede thorus Nybegynder
22. oktober 2004 - 00:42 #16
Problem 2
Hvordan laver jeg:

imagettftext ($im, 9, 0, 0, 15, $color, "arial.ttf", $row["page"]);
$filename = $row["menu_id"]."mid.png";
imagepng($im,$filename);
$MENU = $MENU ."<img border=\"0\" src=\"$filename\">";
imagedestroy($im);

om til at den ikke lægger filen på serveren men kun laver en temp og sletter med det samme.
Avatar billede olebole Juniormester
22. oktober 2004 - 00:44 #17
Nej, du har ikke umiddelbart mulighed for at 'måle', hvorlang teksten visuelt er. Så skal du skrive teksten ind i et skjult span på klienten og måle dettes bredde - før du sender en request til serveren. Det kræver dog, du bruger nøjagtig samme font og størrelse på klient og server  :)
Avatar billede thorus Nybegynder
22. oktober 2004 - 00:46 #18
bruger arial. hvordan med en span?
Avatar billede olebole Juniormester
22. oktober 2004 - 00:51 #19
oups ... prøv forresten lige noget à la:

$newWidth  = ImageFontWidth($myFont) * strlen($myString);
Avatar billede olebole Juniormester
22. oktober 2004 - 00:53 #20
... men den kræver vist, at $myFont er en integer, svarende til en af GDLib's indbyggede fonts  :)
Avatar billede olebole Juniormester
22. oktober 2004 - 00:55 #21
Du kan dog ikke vise billedet i img-tag - og med styles på - hvis ikke det eksisterer som en fysisk fil.
Avatar billede thorus Nybegynder
22. oktober 2004 - 00:57 #22
$count  = ImageFontWidth('arial.ttf') * strlen($row["page"]);
virkede ikke.

hvilke fonte er indbygget?
Avatar billede olebole Juniormester
22. oktober 2004 - 01:13 #23
Jeg kan zq ikke huske det ... prøv at kikke i dokumentationen - og/eller prøv med forskellige tal. Jeg mener, der er 4-5 forskellige fonts. Prøv f.eks. at sætte fonten til '2' alle steder, hvor du skriver 'arial.ttf'.

Jeg kan ikke præcis huske alle features i GDLib. Somregel bruger jeg ImageMagick, der giver langt flere muligheder og bedre kvalitet  :)
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