Avatar billede wiesemarc Nybegynder
02. juni 2003 - 15:08 Der er 13 kommentarer og
1 løsning

Resize billede/blob

Jeg skal have lavet noget der kan resize mine billeder som ligger i min database.. Jeg ved bare lige ikke hvordan man gør det...

Billederne skal kunne vises som Thumbs, og meget gerne fylder mindre end den rigtige størrelse, eller tager det lidt tid at hente 20 billeder a 150 kb...
Avatar billede googolplex Novice
02. juni 2003 - 16:02 #1
Du trækker billedet ud af databasen, resizer det og lægger det tilbage (og resizer alle nye billeder inden du ligger dem op).

Til at resize findes der bunker af funktioner/klasser du kan bruge. Her er et link til en god klasse:

http://www.hotscripts.com/Detailed/14646.html
Avatar billede googolplex Novice
02. juni 2003 - 16:03 #2
Avatar billede detox Nybegynder
02. juni 2003 - 17:05 #3
<?
/* resizeToFile resizes a picture and writes it to the harddisk
*/
$sourcefile = 'img/ditbillede.jpg';
$dest_x  = 120;
$dest_y  = 100;
$targetfile = 'img/thumb.jpg';
$jpegqual = 90;
/* Get the dimensions of the source picture */
$picsize=getimagesize("$sourcefile");
$source_x = $picsize[0];
$source_y  = $picsize[1];
$source_id = imageCreateFromJPEG("$sourcefile");
/* Create a new image object (not neccessarily true colour) */

$target_id=imagecreatetruecolor($dest_x, $dest_y);
/* resize the original picture and copy it into the just created image
  object. Because of the lack of space I had to wrap the parameters to
several lines. I recommend putting them in one line in order keep your
  code clean and readable */

$target_pic=imagecopyresampled($target_id,$source_id,
                            0,0,0,0,
                              $dest_x,$dest_y,
                              $source_x,$source_y);
/* Create a jpeg with the quality of "$jpegqual" out of the
  image object "$target_pic".
  This will be saved as $targetfile */

imagejpeg ($target_id,"$targetfile",$jpegqual);
?>
-------------------------------------------------
ps.: imagecreatetruecolor() kræver du har gd2 installeret.
Avatar billede wiesemarc Nybegynder
02. juni 2003 - 17:43 #4
detox -> Jeg kan ikke få den til at lave en norm. og thumb som den uploader samtidig, jeg har fundet ud af hvordan det ellers fungere...
Du kan da lige se sourcecoden...

<?php
$photoFileName = $_FILES['photo']['name']; // get client side file name
if ($photoFileName) // file uploaded
{    $fileNameParts = explode(".", $photoFileName);
    $fileExtension = end($fileNameParts); // part behind last dot
    if ($fileExtension != "jpg"
        && $fileExtension != "JPEG"
        && $fileExtension != "JPG")
    {    die ("Choose a JPG for the photo");
    }
    $photoSize = $_FILES['photo']['size']; // size of uploaded file

    // read photo
    $tempFileName = $_FILES['photo']['tmp_name']; // temporary file at server side
    $tempFile = fopen($tempFileName, "r");
    $binaryPhoto = fread($tempFile, fileSize($tempFileName));

    // Try to read image
    $old_error_reporting = error_reporting(E_ALL & ~(E_WARNING)); // ingore warnings
    $src_img = imagecreatefromstring($binaryPhoto); // try to create image
    error_reporting($old_error_reporting);

    if (!$src_img) // error, image is not a valid jpg
    { die ("Sorry. It was not possible to read photo $photoFileName. Choose another photo in JPG format.");
    }
//
//    RESIZE THE IMAGE
//
    $width = imagesx($src_img); // get original source image width
    $height = imagesy($src_img); // and height

    $dest_width = 100;
    $dest_height = 100;
    $dest_img = imagecreate($dest_width, $dest_height);
    imagecopyresized( $dest_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_height, $width, $height);

    ob_start();
    imageJPEG($dest_img);
    $binaryThumbnail = ob_get_contents();
    ob_end_clean();
//
//    THUMBNAIL TO FILE ON SERVER
//

    $binaryThumbnail = addslashes($dest_img);

    MYSQL_CONNECT($dbServer,$dbUser,$dbPass);
    mysql_select_db($dbDatabase);

    $data = addslashes(fread(fopen($photo, "r"), filesize($photo)));

    $result=MYSQL_QUERY("INSERT INTO binary_data (description,picture,thumb,filename,filesize,filetype) ".
        "VALUES ('$form_description','$data','$binaryThumbnail','$photo_name','$photo_size','$photo_type')");

    $id= mysql_insert_id();
    $test1 = $_POST['form_description'];
    print "<p>This file has the following Database ID: <b>$id</b> - $test1";



    MYSQL_CLOSE();

} else {

echo "$binaryThumbnail";

}

?>
Avatar billede detox Nybegynder
02. juni 2003 - 18:02 #5
Ok, men du skulle få et bedre resultat, hvis du bruger imagecreatetruecolor() i stedet for imagecreate(), såfremt du alligevel bruger gd2.
Avatar billede wiesemarc Nybegynder
02. juni 2003 - 18:05 #6
Okay... Men det har da ikke noget med at thumb billede ikke gider at komme ind i databasen...
Avatar billede detox Nybegynder
02. juni 2003 - 18:40 #7
måske skal du droppe den her del:
    ob_start();
    imageJPEG($dest_img);
    $binaryThumbnail = ob_get_contents();
    ob_end_clean();
eller er det nogle funktioner du gar et sted?
og her begynder du at bruge $photo:
$data = addslashes(fread(fopen($photo, "r"), filesize($photo)));
det ved jeg ikke hvor du får fra?
men hvad kommer der mere præcist i din database og hvad gør ikke?
Avatar billede wiesemarc Nybegynder
02. juni 2003 - 19:27 #8
$photo -> det er fra inputten file, som hedder det...
Avatar billede detox Nybegynder
02. juni 2003 - 20:18 #9
hmmm, du bruger da: $photoFileName = $_FILES['photo']['name'];
længere oppe?
Avatar billede wiesemarc Nybegynder
02. juni 2003 - 23:17 #10
Ja... Jeg fatter ikke meget af scriptet, ud over at det fungere, men ikke til det hele som jeg gerne vil have...

Jeg ved ikke hvad  $photoFileName = $_FILES['photo']['name']; GØR...
Avatar billede detox Nybegynder
02. juni 2003 - 23:37 #11
$_FILES er en global variabel. $_FILES['photo']['name'] = det oprindelige filnavn.
Du skal nok hellere bruge:
$data = addslashes($binaryPhoto);
hvis det da er den der driller.
Hvilke data er det mere præcist du ikke kan skrive til databasen?
Avatar billede detox Nybegynder
02. juni 2003 - 23:44 #12
Rent faktisk forstår jeg ikke, hvorfor du ikke bare gemmer dine thumbnails på serveren og så gemmer links i din database.
Avatar billede wiesemarc Nybegynder
03. juni 2003 - 19:34 #13
Det er fordi at jeg har uendeligt plads i databasen men ikke på resten...
Avatar billede wiesemarc Nybegynder
05. juni 2003 - 22:48 #14
Ingen hjælp
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