Avatar billede unsafe Nybegynder
27. september 2005 - 23:39 Der er 6 kommentarer og
1 løsning

Resize ved upload

Hej med jer, jeg har stillet dette spørgsmål før, hvor jeg troed det virkede, men gjorder det ikke :-( Så nu prøver jeg igen :-)

Jeg har et galleri i mit community, og når man uploade et billede
skal det originale billede gemmes i images/galleri/ET_ID.jpg og en thumb på
max 100 i brede og højde gemmes i images/galleri/thumb/ET_ID.jpg.

Når den gemmer billeder skal billedet's navn være det id man lige har oprettet i databasen, eks: 55.jpg.

Jeg kan få det til at virke hvor den gemmer det originale
billede, men ikke det jeg prøver at resize.

Her er min kode:


if($_SERVER["REQUEST_METHOD"] == "POST")
{

$connt = mysql_query("SELECT * FROM users WHERE brugernavn =
'$_SESSION[brugernavn]'") or die (mysql_error());
$rst = mysql_fetch_array($connt);

$cnnt = mysql_query("SELECT * FROM galleri WHERE user_id =
'$rst[id]'");
$rnn = mysql_fetch_array($cnnt);

if ($_FILES["picture"])
{

mysql_query("INSERT INTO galleri (user_id, kategori, overskrift,
date, besked, vis)
values ('".$rst["id"]."',
'".$_POST["kategori"]."',
'".htmlspecialchars($_POST["overskrift"])."',
'".date("Y-m-j H:i:s")."',
'".htmlspecialchars($_POST["besked"])."',
'".$_POST["vis"]."')") or die (mysql_error());

$conn = mysql_query("SELECT id FROM galleri WHERE date =
'".date("Y-m-j H:i:s")."' AND user_id = '".$rst["id"]."'") or die
(mysql_error());
$rs = mysql_fetch_array($conn);

if ($_FILES["picture"])
{
$picture = $_FILES["picture"]["tmp_name"];
$picture_name = $_FILES["picture"]["name"];

$picture2 = $_FILES["picture"]["name"];

$width = 100;
$height = 100;

list($width_orig, $height_orig) = getimagesize($picture);

if ($width && ($width_orig < $height_orig)) {
$width = ($height / $height_orig) * $width_orig;
} else {
$height = ($width / $width_orig) * $height_orig;
}

$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($picture);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height,
$width_orig, $height_orig);

if (eregi("(\.jpg)$", $picture_name))
{
copy($picture, "images/galleri/$rs[id].jpg");
copy($image_p, "images/galleri/thumb/$rs[id].jpg");

mysql_query("UPDATE galleri SET bnavn = '$rs[id].jpg'
WHERE id = '".$rs["id"]."'") or die (mysql_error());

}
}
}
}


Nogle der kan hjælpe mig med at løse problemet :-)?
Avatar billede coderdk Praktikant
27. september 2005 - 23:58 #1
copy($image_p, "images/galleri/thumb/$rs[id].jpg");

Laves om til:

imagejpeg($image_p, "images/galleri/thumb/$rs[id].jpg", 85);

Husk at bruge:

imagedestroy( $image_p );
imagedestroy( $image );
Avatar billede unsafe Nybegynder
28. september 2005 - 00:28 #2
Weee tak :-D så virker det :-D

Har kæmpet med det lidt tid nu :-)

Smid et svar :-)
Avatar billede coderdk Praktikant
28. september 2005 - 00:45 #3
Yessir :)
Avatar billede unsafe Nybegynder
28. september 2005 - 04:24 #4
Der er et lille problem til, kan det gøres sådan at hvis billedets størrelse er mindre end de størrelser jeg har angivet i width og heigth bliver billedet det's originale størrelse :-O?
Avatar billede unsafe Nybegynder
28. september 2005 - 04:26 #5
Jeg har prøvet med:


    $width = 200;
    $height = 150;

    $srcSize  = getImageSize($picture);
    if ($srcSize[0] < $width && $srcSize[1] < $height) {
        $destSize[0] = $srcSize[0];
        $destSize[1] = $srcSize[1];
    } else {
    $srcRatio  = $srcSize[0]/$srcSize[1];
    $destRatio = $width/$height;
          if ($destRatio > $srcRatio) {
              $destSize[1] = $height;
              $destSize[0] = $height*$srcRatio;
          }
          else {
              $destSize[0] = $width;
              $destSize[1] = $width/$srcRatio;
          }

}

    $image_p = imagecreatetruecolor($destSize[0], $destSize[1]);
    $image = imagecreatefromjpeg($picture);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $destSize[0], $destSize[1]);


Men så taget det bedre et højrne af billedet.
Avatar billede coderdk Praktikant
28. september 2005 - 18:46 #6
Prøv:

$width = 100;
$height = 100;

list($width_orig, $height_orig) = getimagesize($picture);

$resize = ( $width < $width_orig && $height < $height_orig );

if ( $resize )
{
    if ($width && ($width_orig < $height_orig))
    {
        $width = ($height / $height_orig) * $width_orig;
    }
    else
    {
        $height = ($width / $width_orig) * $height_orig;
    }

    $image_p = imagecreatetruecolor($width, $height);
    $image = imagecreatefromjpeg($picture);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height,
        $width_orig, $height_orig);
}

if (eregi("(\.jpg)$", $picture_name))
{
    copy($picture, "images/galleri/$rs[id].jpg");
    if ( $resize )
    {
        imagejpeg($image_p, "images/galleri/thumb/$rs[id].jpg", 85);
        imagedestroy( $image );
        imagedestroy( $image_p );
    }
    else
    {
        copy($picture, "images/galleri/thumb/$rs[id].jpg");
    }

    mysql_query("UPDATE galleri SET bnavn = '$rs[id].jpg'
        WHERE id = '".$rs["id"]."'") or die (mysql_error());
}
Avatar billede unsafe Nybegynder
28. september 2005 - 19:03 #7
Perfekt tak :-D
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