problemen met imagesize()
ik heb een forum die werkt met inlogs.
nu heeft ieder lid de mogelijkheid om een avatar te uploaden en deze te gebruiken op het forum.
om te voorkomen dat het forum niet overvol komt te staat met de avatars heb ik een list gemaakt met de waarde width en height die worden opgehaalt met getimagesize().
dit werkt prima alleen het vreemde is dat het niet altijd werkt (met het zelfde plaatje)
ik heb al geprobeer om de variabelen te nummeren maar dit helpt ook niet
in een while-loop op een sql query heb ik het volgende staan
$listnum++;
$avatar[$listnum]=$dit['avatar'];
$width=0;$height=0;
list($width, $height) = getimagesize($avatar[$listnum]);
if ($width > $height)
{
$newwidth=round($width/$width*100);
$newheight=round($height/$width*100);
}
if ($width < $height)
{
$newwidth=round($width/$height*100);
$newheight=round($height/$height*100);
}
of ik nu met of zonder nummere doe het werkt altijd maar voor 70 procent...
en het vreemde is dat het niet aan de source van het plaatje ligt want het zelfde plaatje werkt 3x achter elkaar en dan de vierde keer in eens niet meer, dan houd het namelijk de width en height van het plaatje er boven.
heeft iemand een idee waarom dit script de een keer wel en de andere keer niet werkt???
ik heb ook gekeken naar de plaatjes en het maakt niet uit of ik nu 2 of 10 verschillende plaatjes gebruik altijd is er wel een die niet werkt er tussen duur terwel die bijv bij twee posts eerder wel werkte.
Gewijzigd op 01/01/1970 01:00:00 door Earithramir
zal altijd 100 opleveren. Je kunt dus net zo goed:
doen.
dat ging gewoon sneller met copy/paste ;)
edit:
ook meteen veranderd om zo de server wat meer rust te gunnen :P
maar maakt helaas niets uit!
Gewijzigd op 01/01/1970 01:00:00 door Earithramir
ik heb gekeken door bij elke avatar alt='orriginele grootte:*' te zetten en de waardes (ook bij de plaatjes die niet goed verkleind/vergroot worden) kloppen wel vreemd genoeg...
edit:
de urlencode heb ik in de input naar de database gebruikt om te voorkomen dat er iets mis ging tijdens opslaan van de avatar...
Gewijzigd op 01/01/1970 01:00:00 door Earithramir
Ben je niet een beetje andersom bezig? Zou je niet beter bij het uploaden van de avatars een resize script kunnen gebruiken, waardoor ze altijd binnen de maximum waarden vallen? Dan hoef je het naderhand niet meer uit te rekenen.
alleen heb ik geen flauw idee hoe ik een plaatje voor(of tijdens) het uploaden moet verkleine/vergroten
heeft php de mogelijkheid om een plaatje te vergrote/verkleine en vervolgens het plaatje zo weg te schrijven??
als dat zo is gaat het me ook veel bandbreedte schelen
en een hoop code inderdaad ;)
of ben ik dan helemaal verkeerd aan het zoeken ?
oh by the way.. nog bedankd voor de vreselijk snelle reactie, its apreciated !
Gewijzigd op 01/01/1970 01:00:00 door Earithramir
dat gif zowel jpeg ondersteurd en dus beter dan het script hier boven...
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
76
77
78
79
80
81
82
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
76
77
78
79
80
81
82
<?
function img_resize($path2image,$path2thumb,$axis,$size)
{
$imageName = basename($path2image);
$thumbName = basename($path2thumb);
if (ereg("\.gif$",$img_name) || ereg("\.jpe?g",$img_name))
{
$djpeg = "/usr/bin/djpeg";
$cjpeg = "/usr/bin/cjpeg";
$pnmscale = "/usr/bin/pnmscale";
$giftopnm = "/usr/bin/giftopnm";
$ppmtogif = "/usr/bin/ppmtogif";
$ppmquant = "/usr/bin/ppmquant";
$imageAttributes = GetImageSize($path2image);
$imageWidth = $imageAttributes[0];
$imageHeight = $imageAttributes[1];
if ($imageWidth < $size && $imageHeight < $size)
{
@exec("cp $path2image $path2thumb");
chmod($path2thumb, 0666);
}
else
{
if ($axis == "h" || $axis == "a" && $imageHeight > $imageWidth)
{
switch ($imageAttributes[2])
{
case 1:
exec("$giftopnm $path2image | $pnmscale -height $size | $ppmquant 256
| $ppmtogif -interlace > $path2thumb");
chmod($path2thumb, 0666);
break;
case 2:
exec("$djpeg $path2image | $pnmscale -height $size | $cjpeg -outfile
$path2thumb");
chmod($path2thumb, 0666);
break;
case "":
return("");
break;
}
}
if ($axis == "w" || $axis == "a" && $imageWidth > $imageHeight)
{
switch ($imageAttributes[2])
{
case 1:
exec("$giftopnm $path2image | $pnmscale -width $size | $ppmquant 256
| $ppmtogif -interlace > $path2thumb");
chmod($path2thumb, 0666);
break;
case 2:
exec("$djpeg $path2image | $pnmscale -width $size | $cjpeg -outfile
$path2thumb");
chmod($path2thumb, 0666);
break;
case "":
return("");
break;
}
}
}
}
else
{
echo '<FONT SIZE=4>'
.'Unable to complete Resize Function, The file being processed is not a
valid image file. Please use only .GIF or .JPG files'
.'<BR CLEAR=ALL>'
.'</FONT>'
."Hit your browser's back button to continue"
.'<P>';
}
}
?>
function img_resize($path2image,$path2thumb,$axis,$size)
{
$imageName = basename($path2image);
$thumbName = basename($path2thumb);
if (ereg("\.gif$",$img_name) || ereg("\.jpe?g",$img_name))
{
$djpeg = "/usr/bin/djpeg";
$cjpeg = "/usr/bin/cjpeg";
$pnmscale = "/usr/bin/pnmscale";
$giftopnm = "/usr/bin/giftopnm";
$ppmtogif = "/usr/bin/ppmtogif";
$ppmquant = "/usr/bin/ppmquant";
$imageAttributes = GetImageSize($path2image);
$imageWidth = $imageAttributes[0];
$imageHeight = $imageAttributes[1];
if ($imageWidth < $size && $imageHeight < $size)
{
@exec("cp $path2image $path2thumb");
chmod($path2thumb, 0666);
}
else
{
if ($axis == "h" || $axis == "a" && $imageHeight > $imageWidth)
{
switch ($imageAttributes[2])
{
case 1:
exec("$giftopnm $path2image | $pnmscale -height $size | $ppmquant 256
| $ppmtogif -interlace > $path2thumb");
chmod($path2thumb, 0666);
break;
case 2:
exec("$djpeg $path2image | $pnmscale -height $size | $cjpeg -outfile
$path2thumb");
chmod($path2thumb, 0666);
break;
case "":
return("");
break;
}
}
if ($axis == "w" || $axis == "a" && $imageWidth > $imageHeight)
{
switch ($imageAttributes[2])
{
case 1:
exec("$giftopnm $path2image | $pnmscale -width $size | $ppmquant 256
| $ppmtogif -interlace > $path2thumb");
chmod($path2thumb, 0666);
break;
case 2:
exec("$djpeg $path2image | $pnmscale -width $size | $cjpeg -outfile
$path2thumb");
chmod($path2thumb, 0666);
break;
case "":
return("");
break;
}
}
}
}
else
{
echo '<FONT SIZE=4>'
.'Unable to complete Resize Function, The file being processed is not a
valid image file. Please use only .GIF or .JPG files'
.'<BR CLEAR=ALL>'
.'</FONT>'
."Hit your browser's back button to continue"
.'<P>';
}
}
?>