Avatar billede jakobisme Nybegynder
24. maj 2006 - 18:31 Der er 19 kommentarer

Hjælp til: Upload billede + reseize til mysql

Hej,
Jeg har lavet et site, hvor jeg kan uploade billeder, men vil gerne have at billederne ikke er så store, så sider hurtigere loader.

Jeg bruger mysql til at gemme billeder i, og vil gerne have at når man uploader et billede, bliver der lavet en thumb samtidigt med..

Jeg har kigget på denne funktion.. men kan ikke få den til at virke..

på forhånd mange tak for hjælpen..

<?php
// filen image er fra fil uploaderen..
$filename = 'image';
$percent = 0.5;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;

// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// Output
imagejpeg($image_p, null, 100);
?>
Avatar billede olebole Juniormester
24. maj 2006 - 21:44 #1
<ole>

Det er fornuftigt at tænke på performance - men så er det jo ikke så smart at gemme billederne i en DB. Hvorfor ikke bare gemme dem som filer og så gemme navnene i DB'en? Det giver langt bedre performance ... både for dig og evt. andre på hotellet  ;o)

/mvh
</bole>
Avatar billede jakobisme Nybegynder
24. maj 2006 - 22:02 #2
Hej,
Jeg ved godt at det kræver flere resourcer .. men vil gerne have alle tingene samlet et sted.. sådan at jeg nemmere kan lave en backup af det hele..
Jeg skal ikke bruge så mange billeder.. så synes at det er nemmest at bruge databasen til det hele.. har du et bud på et script ?
Avatar billede clausberg Nybegynder
24. maj 2006 - 22:10 #3
Hey...
Jeg sidder faktisk med fuldstændigt det samme problem netop nu :-) Jeg kan ikke hjælpe dig, da jeg også er på bar bund... men jeg er med på en lytter !!!
Avatar billede jakobisme Nybegynder
24. maj 2006 - 22:12 #4
det lyder godt.. har brugt 3 dage på at finde en løsning.. og det er ikke lykkedes endnu .. så giver op og spørger om hjælp : )
Avatar billede clausberg Nybegynder
24. maj 2006 - 22:15 #5
Jeg sidder dog kun på 2. dagen og leder... jeg kan lige smide en kommentar herinde til dig, hvis jeg får svar på mit spørgsmål
Avatar billede jakobisme Nybegynder
24. maj 2006 - 22:17 #6
super.. glæder jeg mig til : )
fandt et indlæg her.. som måske virker http://www.phpuniverset.dk/se_child_forum.phtml?forum_id=1&id=690&se=Tekst.til.billede.og.resize
Avatar billede clausberg Nybegynder
24. maj 2006 - 22:19 #7
Tjek lige dette - har netop fundet det.
http://www.phpriot.com/d/articles/database/images-in-mysql/index.html

Jeg tester det med det samme
Avatar billede jakobisme Nybegynder
24. maj 2006 - 22:32 #8
hej -- desværre det er kun upload funktionen.. jeg skal bare bruge resize funktionen når man skal uploade til en mysql database..
Avatar billede clausberg Nybegynder
24. maj 2006 - 22:39 #9
hæ hæ... troede du var ude efter upload funktionen også... :-)

Vil det sige, at du har et script der kan uploade billeder til en sql database???
Avatar billede jakobisme Nybegynder
24. maj 2006 - 22:42 #10
yeps.. du laver bare en alm. form med enctype multi + data

og så tilføjer du før sql script

$file = fopen($_FILES['image']['tmp_name'], "r");
$image = addslashes(fread($file, filesize($_FILES['image']['tmp_name'])));


forudsat at du har givet dit upload modul name="image"
Avatar billede clausberg Nybegynder
24. maj 2006 - 22:48 #11
... har du mulighed for at smide hele scriptet? Nu ender det jo med at du hjælper mig, og ikke selv får hjælp :-) Det kunne være jeg skulle give dig point :-)
Avatar billede jakobisme Nybegynder
24. maj 2006 - 22:50 #12
så skidt da..
<?
mysql_connect("host", "bruger", "pass");
mysql_select_db("database");

// eller include config.php

?>

<form action="" method="post" enctype="multipart/form-data" name="">
<b>Titel  </b><input type="text" name="title1">
<p>
<b>Tekst</b><br>
<textarea name="text1" cols="50" rows="30"></textarea>


<p>
    <input type="file" name="image">
 

    <input type="submit" name="upload" value="upload">

  <p>&nbsp;  </p>
</form>

<?
if(isset($_POST['upload'])){

mysql_connect("localhost", "root", "");
mysql_select_db("site");


$file = fopen($_FILES['image']['tmp_name'], "r");
$image = addslashes(fread($file, filesize($_FILES['image']['tmp_name'])));
$text = $_POST["text1"];
$title = $_POST["title1"];

mysql_query("insert into images values('null','$image','$text','$title')") or die(mysql_error());

echo "Tekst og billede er uploaded!";

}
?>

<?
mysql_close();
?>
Avatar billede jakobisme Nybegynder
24. maj 2006 - 22:57 #13
jeg har fundet et script.. og på bedste måde sat det sammen så det burde virke.. hvad gjør jeg galt ? :o(

<?
mysql_connect("localhost", "root", "");
mysql_select_db("site");
?>

<?
$upfile = "image" ;
if(isset($_POST['title1'])){
$pic1 = ImageCreateFromJPEG($upfile) ;
                      $sizeX = ImageSX($pic1);
                      $sizeY = ImageSY($pic1);
                                                                                   
                   
                    if ($sizeX > 480)
                    {
                                   
                      $newX = 480;
                      $modsize = $newX / $sizeX;
                    $newY = round($sizeY * $modsize);
                    $pic2 = imagecreatetruecolor($newX, $newY);
                      ImageCopyResampled($pic2,$pic1, 0,0, 0,0, $newX,$newY, $sizeX,$sizeY);
                     
                      ImageAlphaBlending($pic2, true);

            $logoImage = ImageCreateFromPNG('logo.png');
            $logoW = ImageSX($logoImage);
            $logoH = ImageSY($logoImage);
           
            $finsizex = (($newX - 4) - $logoW) ;
            $finsizey = (($newY - 4) - $logoH) ;
           
            ImageCopy($pic2, $logoImage, $finsizex ,$finsizey ,0,0, $logoW, $logoH);
                   
            ImageDestroy($logoImage);
                     
                                                                         
                    ImageJPEG($pic2,"../$pic_sti/".$theid, 85);             
                }
                else
                {
                $pic3 = imagecreatetruecolor($sizeX,$sizeY);
                      ImageCopyResampled($pic3,$pic1, 0,0, 0,0, $sizeX,$sizeY, $sizeX,$sizeY);
                ImageAlphaBlending($pic3, true);
                           
           
           
           
            $logoImage = ImageCreateFromPNG('logo.png');
            $logoW = ImageSX($logoImage);
            $logoH = ImageSY($logoImage);
           
            $finsizeX = (($sizeX - 4) - $logoW) ;
            $finsizeY = (($sizeY - 4) - $logoH) ;
            ImageCopy($pic3, $logoImage, $finsizeX, $finsizeY, 0, 0, $logoW, $logoH);
                   
            ImageDestroy($logoImage);
                           
                ImageJPEG($pic3,"../$pic_sti/".$theid, 99);
                }
               
                      $newX = 50;
                  $modsize = $newX / $sizeX;
                    $newY = round($sizeY * $modsize);
                    $pic2 = imagecreatetruecolor($newX, $newY);
                      ImageCopyResampled($pic2,$pic1, 0,0, 0,0, $newX,$newY, $sizeX,$sizeY);
                     
                      ImageAlphaBlending($pic2, true);

            $logoImage = ImageCreateFromPNG('logo2.png');
            $logoW = ImageSX($logoImage);
            $logoH = ImageSY($logoImage);
           
            $finsizex = (($newX) - $logoW) ;
            $finsizey = (($newY) - $logoH) ;
           
            ImageCopy($pic2, $logoImage, $finsizex ,$finsizey ,0,0, $logoW, $logoH);
                   
            ImageDestroy($logoImage);
                     
                    ImageJPEG($pic2,"../$pic_sti_thumb/".$theid, 99);             
               
                ImageDestroy($pic1);
               
$title = $_POST["title1"];   
                             
            mysql_query ("INSERT INTO images (id, image, title) VALUES ('$userid', '$theid','$title')") or die(mysql_error());

}
?>
<form action="<?= $_SERVER["REQUEST_URI"] ?>" method="post" enctype="multipart/form-data" name="">
<b>Titel  </b><input type="text" name="title1">
<input type="file" name="image">

<input type="submit" name="upload" value="upload">
Avatar billede clausberg Nybegynder
24. maj 2006 - 22:59 #14
Respekt :-)

Det er netop sådan noget jeg leder efter...

Vil det sige, at jeg skal oprette en database der hedder "database" ???
Og skal jeg så oprette en table med 4 felter...
id
navn
tekst
blob... (til at gemme billedet i)
Avatar billede jakobisme Nybegynder
24. maj 2006 - 23:02 #15
yeps.. det er rigtigt..
ID = primary
Blob skal være lang.. Longblob
Avatar billede clausberg Nybegynder
24. maj 2006 - 23:03 #16
Perfekt...
har du tjekket denne artikel om resize:
http://www.blazonry.com/scripting/upload-size.php
Avatar billede jakobisme Nybegynder
24. maj 2006 - 23:06 #17
desværre kun på server.. og ikke sql
Avatar billede clausberg Nybegynder
24. maj 2006 - 23:33 #18
Jeg fortsætter jagten... skal nok vende tilbage, hvis jeg finder noget af interesse. Som sagt leder jeg jo også efter lidt resize´ing
Avatar billede jakobisme Nybegynder
24. maj 2006 - 23:34 #19
lyder godt.. er ved at blive godt frustreret ..
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