Hallo,
Probleem
Het uploaden én verkleinen van een transparante GIF afbeelding gaat mis; alles wat transparant is wordt zwart. PNG afbeeldingen gaan wel goed. Het gekke is, op een andere server werkt het wel, terwijl ik geen verschil in versies kan ontdekken.
Uiteraard gezocht in de manual, op Google en hier. De code die ik gebruik lijkt mij goed, aangezien deze op de ene server wel werkt, maar op de andere niet.
De code
De servers
Waar het wel werkt: Linux (volgens mij Debian)
Configure Command:
Configure Command:
Ik zou eigenlijk niet weten waar het aan kan liggen, het uploaden van transparante PNGs gaat altijd goed. Transparante GIFs werken dus op de ene server wel, op de andere wordt het zwart. Daarom denk ik dat het toch aan de servers ligt, maar ik zie geen verschillen waarvan ik denk dat dat het probleem kan zijn.
Probleem
Het uploaden én verkleinen van een transparante GIF afbeelding gaat mis; alles wat transparant is wordt zwart. PNG afbeeldingen gaan wel goed. Het gekke is, op een andere server werkt het wel, terwijl ik geen verschil in versies kan ontdekken.
Uiteraard gezocht in de manual, op Google en hier. De code die ik gebruik lijkt mij goed, aangezien deze op de ene server wel werkt, maar op de andere niet.
De code
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
| <?php if (isset($_FILES['alphaImage']['error']) && $_FILES['alphaImage']['error'] == 0) { /* Vars */ $src = $_FILES['alphaImage']['tmp_name']; $dst = $_SERVER['DOCUMENT_ROOT'].'/delta-automatisering/beheer/afbeeldingen/'.$_FILES['alphaImage']['name']; /* Get image info */ $im_type = getimagesize($src); $im_mime = image_type_to_mime_type($im_type[2]); /* Switch mime-type */ switch( $im_mime ) { case 'image/gif': $im_src = imagecreatefromgif($src); $colorTransparent = imagecolortransparent($im_src); $im = imagecreatetruecolor(200, 200); imagepalettecopy($im, $im_src); imagefill($im, 0, 0, $colorTransparent); imagecolortransparent($im, $colorTransparent); imagealphablending($im, false); imagecopyresized($im, $im_src, 0, 0, 0, 0, 200, 200, imagesx($im_src), imagesy($im_src)); imagegif($im, $dst, 99); break; case 'image/jpeg': case 'image/pjpeg': $im_src = imagecreatefromjpeg($src); $im = imagecreatetruecolor(200, 200); imagecopyresized($im, $im_src, 0, 0, 0, 0, 200, 200, imagesx($im_src), imagesy($im_src)); imagejpeg($im, $dst, 99); break; case 'image/png': $im_src = imagecreatefrompng($src); $im = imagecreatetruecolor(200, 200); imagealphablending($im, FALSE); imagesavealpha($im, TRUE); imagecopyresized($im, $im_src, 0, 0, 0, 0, 200, 200, imagesx($im_src), imagesy($im_src)); imagepng($im, $dst, 99); break; default: return false; break; } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> <title>Upload met behoud van alpha bij GIF</title> </head> <body style="background:#CCFFCC;"> <p>Selecteer nieuwe GIF afbeelding:</p> <form action="alphaupload_.php" name="alpha" method="post" enctype="multipart/form-data"> <input type="file" name="alphaImage"> <input type="submit" value="Upload"> </form> <p>Huidige afbeelding:</p> [img]"<?=$_FILES['alphaImage']['name'];?>"> </body> </html[/img] |
De servers
Waar het wel werkt: Linux (volgens mij Debian)
Configure Command:
GD'./configure' '--with-apxs' '--with-curl' '--with-curl-dir=/usr/local/lib' '--with-gd' '--with-gd-dir=/usr/local/lib' '--with-gettext' '--with-jpeg-dir=/usr/local/lib' [...]
Waar het niet werkt: Linux (FedoraCore dacht ik)GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
Configure Command:
GD[...] '--with-png-dir=/usr' '--with-gd=shared' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-ncurses=shared' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' [...]
Ideeën?GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
Ik zou eigenlijk niet weten waar het aan kan liggen, het uploaden van transparante PNGs gaat altijd goed. Transparante GIFs werken dus op de ene server wel, op de andere wordt het zwart. Daarom denk ik dat het toch aan de servers ligt, maar ik zie geen verschillen waarvan ik denk dat dat het probleem kan zijn.
“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.