Toon posts:

[PHP] GD Image sizes kloppen niet altijd..

Pagina: 1
Acties:
  • 34 views sinds 30-01-2008

Verwijderd

Topicstarter
Heey mensen,

Ik zit nu al een tijdje te kloten met mijn functie maar hij werkt niet helemaal naar behoren.

wat mijn bedoeling is, als je 400x400 opgeeft dat hij het plaatje dan ook echt resized naar 400x400. Want nu doet hij het soms goed.

Wat tests:
Een plaatje van 800x600: http://www.scootxtreme.nl...diskspace/1/miesfinal.jpg]

resizen van 800x600 naar 400x300:
http://www.scootxtreme.nl....jpg&width=400&height=300
Ziet er goed uit.

http://www.scootxtreme.nl....jpg&width=400&height=350
Ziet er niet goed uit, hij snijd hem niet af.

http://www.scootxtreme.nl....jpg&width=400&height=250
nu snijd hij teveel af en verkleint hij hem niet in hoogte dan.

Het lijkt net alsof er een fout in het script zit, maar ik kan niks vinden eigenlijk. De functie heb ik niet zelf geschreven maar ik snap het grotendeels wel. Behalve het gedoe met die ratio.

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
<?
header("Content-Type: image/png");
function image_resize($image,$width,$height,$color=array(0,0,0)){
    if(@$size = getimagesize($image)){
        $newsize=array();
        if($size[0]==$size[1]){
            $newsize['width']=$width;
            $newsize['height']=$height;
        }elseif($size[0]<$size[1]){
            $ratio=$height/$size[1];
            $newsize['width']=$ratio*$size[0];
            $newsize['height']=$ratio*$size[1];
        }else{
            $ratio=$width/$size[0];
            $newsize['width']=$ratio*$size[0];
            $newsize['height']=$ratio*$size[1];
        }
        if($newsize['width']>$size[0]){
            $newsize['width']=$size[0];
        }
        if($newsize['height']>$size[1]){
            $newsize['height']=$size[1];
        }
        switch($size[2]){
            case 1:
                $input=imagecreatefromgif($image);
                break;
            case 2:
                $input=imagecreatefromjpeg($image);
                break;
            case 3:
                $input=imagecreatefrompng(image);
                break;
            default:
                $input=imagecreate($width,$height);
                imagecolorallocate($input,125,125,125);
                imagestring($input,2,2,2,'Wrong image type',imagecolorallocate($input,230,230,230));
        }
        $output=imagecreatetruecolor($width,$height);
        imagecolorallocate($output,$color[0],$color[1],$color[2]);
        imagecopyresampled($output,$input,0,0,0,0,$newsize['width'],$newsize['height'],$size[0],$size[1]);
    }else{
        $output=imagecreate($width,$height);
        imagecolorallocate($output,125,125,125);
        imagestring($output,2,2,2,'The image does not exists',imagecolorallocate($output,230,230,230));
        imagestring($output,2,2,15,'or is not reachable',imagecolorallocate($output,230,230,230));
    }
    imagepng($output);
}
image_resize($_GET['image'],$_GET['width'],$_GET['height']);
?>


Hopelijk weet iemand wat ik het beste kan doen...

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Dat 'gedoe' met die ratio zorgt juist voor je probleem.

There's no place like 127.0.0.1


  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

Je ratio's kunnen ook floats worden, ik zou zeggen kijk eens naar round.

Ach, nu ik toch bezig ben:
PHP:
1
$ratio = round($width / $size[0], 0) ;


En je leest een JPG in, maar output een PNG... is dat wel helemaal fris?

[ Voor 50% gewijzigd door Cavorka op 27-07-2004 22:12 ]

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:50

gorgi_19

Kruimeltjes zijn weer op :9

Het lijkt net alsof er een fout in het script zit, maar ik kan niks vinden eigenlijk. De functie heb ik niet zelf geschreven maar ik snap het grotendeels wel
Dan mail je de maker. :) We zijn er hier niet om support op andermans scripts te geven; we kunnen niet raden wat die ander voor bedoeling heeft gehad :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Dit topic is gesloten.