problemen met imagesize()

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Earithramir

Earithramir

15/01/2007 23:16:00
Quote Anchor link
hoi,

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
 
PHP hulp

PHP hulp

19/11/2024 18:27:07
 
Jan Koehoorn

Jan Koehoorn

15/01/2007 23:20:00
Quote Anchor link
Ik zou zo snel niet weten wat je problemen veroorzaakt, maar een statement als dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $newwidth
=round($width/$width*100);
?>

zal altijd 100 opleveren. Je kunt dus net zo goed:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $newwidth
= 100;
?>

doen.
 
Earithramir

Earithramir

15/01/2007 23:21:00
Quote Anchor link
haha ja dat is ook weer zo..
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
 
Jan Koehoorn

Jan Koehoorn

15/01/2007 23:25:00
Quote Anchor link
Als de bestandsnaam van een plaatje spaties bevat, gaat getimagesize ook fout. Dat kun je verhelpen met behulp van urlencode.
 
Earithramir

Earithramir

15/01/2007 23:29:00
Quote Anchor link
dat is niet geval,
ik heb gekeken door bij elke avatar alt='orriginele grootte:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$width?>
*
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$height?>
' 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
 
Jan Koehoorn

Jan Koehoorn

15/01/2007 23:33:00
Quote Anchor link
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.
 
Earithramir

Earithramir

15/01/2007 23:36:00
Quote Anchor link
hmm dat is inderdaad wel een idee...
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 ;)
 
Earithramir

Earithramir

15/01/2007 23:40:00
Quote Anchor link
moet dat met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
system("pnmscale -xy 250 200 $tmpimg | cjpeg -smoo 10 -qual 50 >$newfile");
?>


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
 
Earithramir

Earithramir

15/01/2007 23:52:00
Quote Anchor link
ik denk dat ik een script gevonden heb via mijn beste vriend google :P
dat gif zowel jpeg ondersteurd en dus beter dan het script hier boven...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
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>';
    }
   }

?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.