Avatar billede krydset Nybegynder
24. januar 2004 - 00:54 Der er 13 kommentarer og
1 løsning

Hurgtigst resize et billede

Hvordan kan man på få muligst linier resize et billede. det skal ikke være en resize class eller den i html img src="url.jpg" width="x" height="y"> men i php, jeg fatter hat af hvordan man gør :-(
Avatar billede googolplex Novice
24. januar 2004 - 01:16 #1
Hvorfor ikke en resize class, så skal du jo bare inkludere klassen og derefter kan du lave en thumbnail (med skygge og/eller andre effekter) på meget få linier.
Avatar billede krydset Nybegynder
24. januar 2004 - 01:35 #2
nej bare noget der resizer det billed der bliver udskrevet
Avatar billede detox Nybegynder
24. januar 2004 - 01:47 #3
Her er en funktion der gør brug af GD-lib. Billedet skal i dette tilfælde være jpg:

<?php
$pic = "evt/sti/billede.jpg";                // Originalt billede
$thumb = "evt/sti/billede_thumb.jpg";            // Ønsket miniature billede
Thumb($pic, $thumb);                    // Kald funktion

function Thumb($sourcefile, $targetfile) {
    $size = 80;                            // Max størrelse (pixler)
    $source_id = imageCreateFromJPEG($sourcefile);
    $source_x = imagesx($source_id);
    $source_y = imagesy($source_id);
    $delta = $size/max($source_x, $source_y);
    $dest_x = round($source_x*$delta);
    $dest_y = round($source_y*$delta);
    $target_id=imagecreatetruecolor($dest_x, $dest_y);
    imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
    imagejpeg($target_id,$targetfile,100);
}
?>
Avatar billede krydset Nybegynder
24. januar 2004 - 09:35 #4
Ja så er problemet der :-O
Fatal error: imagecreatetruecolor(): requires GD 2.0 or later in /home/administrator/www/image.php on line 15
Avatar billede krydset Nybegynder
24. januar 2004 - 09:41 #5
Kan man gøre det uden truecolor?
Avatar billede detox Nybegynder
24. januar 2004 - 11:53 #6
Ja, prøv med imagecreate() og imagecopyresized() istedet.
Avatar billede detox Nybegynder
24. januar 2004 - 11:57 #7
Men det skal så siges at resultatet mildest talt ikke altid bliver lige godt.
Avatar billede detox Nybegynder
24. januar 2004 - 12:21 #8
Tjek selv forskellen her:
http://www.buksevand.dk/test2/gdlibs.php
Avatar billede krydset Nybegynder
24. januar 2004 - 13:02 #9
hmmm, nogen der ved hvordan man installere gdlib 2.0 på en redhat 7.3 server :-O
Avatar billede detox Nybegynder
24. januar 2004 - 13:44 #10
Der står alt om det her. Bemærk at det er bundled fra ver. 4.3.0
http://dk2.php.net/manual/en/ref.image.php
Avatar billede krydset Nybegynder
24. januar 2004 - 15:25 #11
bundled betyder det at det er med i som standard??
Avatar billede krydset Nybegynder
24. januar 2004 - 15:40 #12
Oki, har lavet en server med gdlib 2.0, hvordan udskriver jeg billedet me det du skrev detox??
Avatar billede detox Nybegynder
25. januar 2004 - 17:18 #13
Fx:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Mail Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<style type="text/css">
body {
    background: #F0FFF0;
}
</style>
</head>
<body>
<?php
$pic = "img/Vinca.jpg";                    // Originalt billede
$navn = explode(".", $pic);
$ext = array_pop($navn);
$navn = implode(".", $navn).".thumb.".$ext;
$size = 80;                                // Max størrelse (pixler)
$out = "<h1>GD-lib 2.0</h1>";
    Thumb($pic, $navn, $size);
    $out .= "<a href='".$pic."'><img src='".$navn."' /></a>";
echo $out;

function Thumb($sourcefile, $targetfile, $size) {
    $source_id = imageCreateFromJPEG($sourcefile);
    $source_x = imagesx($source_id);
    $source_y = imagesy($source_id);
    $delta = $size/max($source_x, $source_y);
    $dest_x = round($source_x*$delta);
    $dest_y = round($source_y*$delta);
    $target_id=imagecreatetruecolor($dest_x, $dest_y);
    imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
    imagejpeg($target_id,$targetfile,100);
}
?>
</body>
</html>
Avatar billede detox Nybegynder
25. januar 2004 - 17:26 #14
Eller hvis du ikke ønsker at gemme thumbnailen, men bare vise den:

<?php
$sourcefile = "img/Vinca.jpg";                    // Originalt billede
$size = 80;                                // Max størrelse (pixler)

    $source_id = imageCreateFromJPEG($sourcefile);
    $source_x = imagesx($source_id);
    $source_y = imagesy($source_id);
    $delta = $size/max($source_x, $source_y);
    $dest_x = round($source_x*$delta);
    $dest_y = round($source_y*$delta);
    $target_id=imagecreatetruecolor($dest_x, $dest_y);
    imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
    header("content: image/jpeg");
    imagejpeg($target_id);
?>

Denne fil kan så evt kaldes fra en anden side med:

<img src="fil_navn.php" />
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester