[php] voor uw plezier: image resize script

Pagina: 1
Acties:
  • 246 views sinds 30-01-2008
  • Reageer

  • [ti]
  • Registratie: Februari 2000
  • Niet online
Dit ooit es gemaakt, nooit echt gebruikt. Misschien heeft iemand er nog wat aan. Je hebt wel JPEG support en GD2 nodig in je PHP (is onder windows niet zo lastig, onder linux is GD2 compileren nogal rottig).
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
<?
set_time_limit(0); // we don't want to timeout.

if ((isset($image)) &amp;&amp; (is_uploaded_file($image)))
{ // resize the image

    if ($HTTP_POST_FILES['image']['type'] != "image/pjpeg")
        die($HTTP_POST_FILES['image']['type'] . " is not a supported file type");

    $inputImg = ImageCreateFromJPEG($image);
    
    $srcX = imagesx($inputImg);
    $srcY = imagesy($inputImg);
    
    $dstY = 72; // fixed Y for the image. always the same
    $maxX = 96; // max X for image, if image is smaller it will be centered
    
    $ratio = ($srcY / $dstY);
    $dstX  = ($srcX / $ratio);
    
    $outputImg = ImageCreateTrueColor($maxX, $dstY);
    imagefill($outputImg, 0, 0, ImageColorAllocate($outputImg, 255, 255, 255));
    
    imagecopyresampled($outputImg, $inputImg,
                       (($maxX - $dstX) / 2),0,0,0,
                       $dstX, $dstY,
                       $srcX, $srcY);

    header("content-type: image/png");
    imagepng($outputImg);
}
else // print the form
{
    printf("<form enctype=\"multipart/form-data\" action=\"\" method=\"post\">");
    printf("Resize image: <input name=\"image\" type=\"file\">");
    printf("<input type=\"submit\" value=\"Submit Image\">");
    printf("</form>");
}
?>

Helaas heb ik 'm niet ergens online staan.

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 30-07 20:13

HenkS

Da_king alias HenkS

ik heb ook zo'n script, wel online voor te showen :)

  • [ti]
  • Registratie: Februari 2000
  • Niet online
HenkS: ik heb ook zo'n script, wel online voor te showen :)
Dan zou een url wel leuk zijn om mee te spelen ;)

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 30-07 20:13

HenkS

Da_king alias HenkS

nou ja als je hier op een link klikt, roep je het script aan, is niet echt super, maar werkt wel: (nou ja niet met alles browesers heb ik vernomen)

http://www.roostenlaan.nl/fotopagina/foto.php3

  • daaan
  • Registratie: Maart 2000
  • Laatst online: 03-12-2025

daaan

Brandweer Zoutkamp

Okee leuk, dat werkt goed, maar is er ook zo'n script die een Jpg resized, en dan als jpg opslaat?

ik heb geen idee hoe ik dat hiervan moet bakken :'( .

One's never alone with a rubber duck.


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
    define('C_JPEG_QUALITY', 70);

    function thumb($src) {
        if (isSet($src) &amp;&amp; file_exists($src)) {
            $thumbname = '_thumb-'.$src;
            if (!file_exists($thumbname)) {
                $srcimg = ImageCreateFromJPEG($src);

                $newy = 100;
                $sx = ImageSX($srcimg); $sy = ImageSY($srcimg);
                $newx = $sx * ($newy / $sy);

                $destimg = ImageCreateTrueColor($newx, $newy);
                ImageCopyResampled($destimg, $srcimg, 0,0,0,0, $newx, $newy, ImageSX($srcimg), ImageSY($srcimg));
                ImageDestroy($srcimg);
                ImageJPEG($destimg, $thumbname, C_JPEG_QUALITY);
            }
            return $thumbname;
        }
    }
?>

  • [ti]
  • Registratie: Februari 2000
  • Niet online
Vervang
code:
1
2
header("content-type: image/png");
imagepng($outputImg);

met
code:
1
2
header("content-type: image/jpeg");
imagejpeg($outputImg);

en hij stuurt 'n jpeg.

Als je het op wilt slaan doe je zoiets als:
code:
1
imagejpeg($outputImg, "/waar/die/file/moet/komen/bla.jpg");

Wel zorgen dat je apache/iis/webserver schrijf rechten in die dir heeft natuurlijk.

  • daaan
  • Registratie: Maart 2000
  • Laatst online: 03-12-2025

daaan

Brandweer Zoutkamp

Thank you! :)

O+ PHP O+

One's never alone with a rubber duck.


Verwijderd

Ik heb er ook al een paar gemaakt en gebruikt voor klanten, het grootste nadeel van deze scripts is dat ze of kwalitatief K** zijn of dat je je systeem zo'n beetje open moet zetten (beveiliging) om bepaalde proggies te draaien die je foto resizen.
Vaak gewoon het beste om eerst te resizen en dan uploaden. :)

Verwijderd

thnxs is wel handig :)

  • daaan
  • Registratie: Maart 2000
  • Laatst online: 03-12-2025

daaan

Brandweer Zoutkamp

Op maandag 07 januari 2002 16:43 schreef Tuin het volgende:
Ik heb er ook al een paar gemaakt en gebruikt voor klanten, het grootste nadeel van deze scripts is dat ze of kwalitatief K** zijn of dat je je systeem zo'n beetje open moet zetten (beveiliging) om bepaalde proggies te draaien die je foto resizen.
Vaak gewoon het beste om eerst te resizen en dan uploaden. :)
ja, dat is wel het beste, maar ik wil dat andere mensen plaatjes uploaden... en voordat je die dat wijsgemaakt hebt >:)

One's never alone with a rubber duck.


  • [ti]
  • Registratie: Februari 2000
  • Niet online
Op maandag 07 januari 2002 16:43 schreef Tuin het volgende:
Ik heb er ook al een paar gemaakt en gebruikt voor klanten, het grootste nadeel van deze scripts is dat ze of kwalitatief K** zijn of dat je je systeem zo'n beetje open moet zetten (beveiliging) om bepaalde proggies te draaien die je foto resizen.
Vaak gewoon het beste om eerst te resizen en dan uploaden. :)
Zolang je GD2 gebruikt (en dus ImageCreateTrueColor() kunt gebruiken) is er niks mis met de kwaliteit.

En als je script niet veilig genoeg is ligt dat toch echt aan je eigen programmeerkunsten hoor :)

  • daaan
  • Registratie: Maart 2000
  • Laatst online: 03-12-2025

daaan

Brandweer Zoutkamp

Hmm, ik heb de resize.php, en de dir /blaat/ waar hij die plaatjes moet schrijven nu 777 gemod, maar hij zegt dat hij niet mag schrijven :(

en het werkte eerst wel zonder de resize

One's never alone with a rubber duck.


  • daaan
  • Registratie: Maart 2000
  • Laatst online: 03-12-2025

daaan

Brandweer Zoutkamp

ik krijg nu steeds de volgende melding:
Warning: imagejpeg: unable to open '/blaat/i.jpg' for writing in /home/sites/site33/web/goo/resize.php on line 37

dit is een stukje code:
PHP:
1
2
3
4
5
6
7
8
9
<?
imagecopyresampled($outputImg, $inputImg,
                       (($maxX - $dstX) / 2),0,0,0,
                       $dstX, $dstY,
                       $srcX, $srcY);

    header("content-type: image/jpeg");
    imagejpeg($outputImg, "$plaatje");
?>

waar $plaatje "/blaat/i.jpg" is.

alle dirs zijn 777 ge-chmod en de php file die moet schrijven ook, help?

One's never alone with a rubber duck.


  • [ti]
  • Registratie: Februari 2000
  • Niet online
Je moet het absolute path opgeven, niet het relatieve. Waarschijnlijk heb je ergens iets als in /home/www/blaat/ en die blaat/ heb je gechmod naar 777. $plaatje moet dan iets worden alsin "/home/www/blaat/i.jpg"

Verwijderd

Heyyyyyyyyyyy!!!!!! die stond ook ergens op een codebase van een van de 2 strijdende tweaker groepies :P ook onder jou naam trouwens maar was toch ff leuk om te melden :)

Verwijderd

Op maandag 07 januari 2002 22:59 schreef Xtentic het volgende:
Heyyyyyyyyyyy!!!!!! die stond ook ergens op een codebase van een van de 2 strijdende tweaker groepies :P ook onder jou naam trouwens maar was toch ff leuk om te melden :)
-edit was op die van scorpion edit-

  • daaan
  • Registratie: Maart 2000
  • Laatst online: 03-12-2025

daaan

Brandweer Zoutkamp

Op maandag 07 januari 2002 22:51 schreef [ti] het volgende:
Je moet het absolute path opgeven, niet het relatieve. Waarschijnlijk heb je ergens iets als in /home/www/blaat/ en die blaat/ heb je gechmod naar 777. $plaatje moet dan iets worden alsin "/home/www/blaat/i.jpg"
Thank you

One's never alone with a rubber duck.


Verwijderd

een late reaktie, maar ik heb het script hierboven beschreven gebruikt en vond deze aanvulling wel gepast.

je moet de doel dir aanmaken door apache via een php script
<?
mkdir ("/home/httpd/waar/je/het/maar/wilt", 0755);
?>
de eigenaar van deze dir wordt apache
wissen van file's in deze dir moet ook via een php script
<?
unlink ("/home/httpd/waar/je/het/maar/wilt/file.iets");
?>
wissen van deze dir is lastiger
Pagina: 1