Avatar billede dd-man Nybegynder
06. juli 2003 - 11:54 Der er 6 kommentarer og
1 løsning

Ang. gdlib og rzj

Dette er et tillægsspørgsmål til:
http://www.eksperten.dk/spm/373127

som omhandler denne kode skal omskrives med bedre gdlib:

Hej rzj.

Jeg har leget lidt med dit forslag, men synes det driller lidt... jeg tror det er fordi det er for uoverskueligt. Vil du ikke være venlig at prøve at sætte det ind i min kode i stedet for den gdlib kode jeg har?

Det jeg har her, er at jeg uploader flere billeder, og de bliver renamed til billedeID_billedeNR eks.:
14_1.jpg
14_2.jpg
14_3.jpg
14_4.jpg

og bagefter bliver det via gdlib ændret i størrelse... håber du kan hjælpe mig, sætter lidt flere points af. Tak

-------- KODE START --------
if ($_FILES['billede']) {
  $i = 0;
  $nr = 1;
    while (list($name, $value) = each($_FILES['billede']['name'])) {
      if ($value) {
        $dist = "images/upload/";
        $files = $value;
        if (eregi(".jpg$|.gif$|.jpeg$", $files)) {
          $temparr = explode(".", $files);
          $temparr[count($temparr)-2] = $sidsteID."_".$nr;
          $files = implode(".", $temparr);
          move_uploaded_file($_FILES['billede']['tmp_name'][$i], $dist . "temp_". $files);
          $destination = $dist . $files;
           
          // start-gdlib
          if (eregi(".jpg$|.jpeg$", $files)) {
            $gal_pic = str_replace(" ", "_", $_FILES['billede']['name']);
            $filnavn = "images/upload/temp_".$files;
            $pic1 = ImageCreateFromJPEG($filnavn);
            $sizeX = ImageSX($pic1);
            $sizeY = ImageSY($pic1);
            if ($sizeX > 200) {
              $newX = 200;
              $modsize = $newX / $sizeX;
              $newY = round($sizeY * $modsize);
              $pic2 = ImageCreateTruecolor($newX, $newY);
              ImageCopyResampled($pic2,$pic1, 0,0, 0,0, $newX,$newY, $sizeX,$sizeY);
            } else {
              $pic2 = ImageCreateFromJPEG($filnavn);
            }
            ImageJPEG($pic2, $destination, 100);
            ImageDestroy($pic1);
            ImageDestroy($pic2);
            unlink("images/upload/temp_".$files);
          }
          // slut-gdlib
           
          mysql_query("INSERT INTO $produkt_billeder (varenr,billede) VALUES ('$sidsteID','$destination')") or die (mysql_error());
          $nr++;
        } else {
          echo("Du har ikke sat nogle billeder til annoncen, da du ikke har valgt nogle acceptable billede-typer!<br>Klik <a href=\"java script:history.go(-1);\">her</a> for at vende tilbage annonce-indtastning");
          exit;
        }
      }
      $i++;
    }
}
-------- KODE SLUT ---------
Avatar billede rzj Nybegynder
06. juli 2003 - 12:33 #1
jo, det kan jeg godt...øjeblik
$raz
Avatar billede rzj Nybegynder
06. juli 2003 - 12:47 #2
mhmhm, jeg mangler at forstå helt præcist hvad du ønsker - jeg har svært ved at tyde din kode :-)

Ønsker du at beholde det originale billede?
Hvorfor laver du 2 billeder, hvor det ene resizes og det andet bare genereres igen?
Avatar billede rzj Nybegynder
06. juli 2003 - 13:21 #3
du kan lige tænke over det her kode:

Jeg ved det ser meget anderledes ud end dit, men det burde være mere generisk at flytte rundt på :-)

# SERVER PATH TO ROOT
define("USER_DIR", "/xxx/yyy/zzz");

# IMAGE UPLOAD SETTINGS
define("TEMP_IMAGE_DIR", USER_DIR."/phpupload/");
define("FINAL_IMAGE_DIR", USER_DIR."/www/images/upload/");
define("ENABLE_RENAMEIMAGES", true);
define("MAX_IMAGESIZE", 20480);

define("RESIZE_IMAGES", true);
define("THUMB_QUALITY", 80);
define("THUMB_IMAGE_WIDTH", 150);
define("THUMB_IMAGE_HEIGHT", 100);
define("ALWAYS_KEEP_ORIGINAL", false);
define("ORIGINAL_DIR", USER_DIR."/www/images/upload/original/");



function uploadFile() {

// Short'n references
$name = $_FILES['upfile']['name'];
$size = $_FILES['upfile']['size'];
$type = $_FILES['upfile']['type'];
$tmp_name = $_FILES['upfile']['tmp_name'];
   
#
# DECLARE
#

//Directory in which to work
$tempDir = TEMP_IMAGE_DIR;
$dest = $tempDir.$name;
 
//Definition of filename
$fileName = $name;


//Directory to place file ones uploaded
$finalDir = FINAL_IMAGE_DIR;
   
//Array containing valid file types
$formats = array('image/jpeg', 'image/pjpeg', 'image/gif', 'image/png','image/x-png');
       
//Round Max filesize to KB
//Possible output to user
$maxSizeKB = round(MAX_IMAGESIZE/1000, 0);
   
if(ENABLE_RENAMEIMAGES == true){
 
  # RENAMED AFTER DATE AND TIME
  $today = date("dmy-His");
  list($filename, $fileExtension) = explode('.', $name);
  $fileRenamed = $today.'.'.$fileExtension;
}else{
  $fileRenamed = $name;
}
   
//Check if file has zero size
if($size == 0){
  error("File has zero size.");
}

//Check if file is above limit for file
if($size > $MAX_IMAGESIZE){
  $sizeKB = round($size/1000, 0);
  error("File exceeds allowed size!<br>
        size of uploaded file: $sizeKB.
        Maximum allowed size : $maxSizeKB KB.<br>
    Try to save file in different format or increase compression and/or image size.");
}

//Check if file is uploaded via HTTP POST
if(!is_uploaded_file($tmp_name)){
  error("Possible 'crackattack' during upload!");
}
       
//Check if filetype is  valid
if(!in_array($type, $formats)) {
  error("Wrong  filetype!".$type);
}
       
//Change attribute of file
umask(0000);
       
//Failed to move file on server or greenlight for "go"
if(@!move_uploaded_file ($tmp_name, $tempDir.$fileName)){
  unlink($finalDir.$fileName);
  error("Unable to move file");
}

//Try to rename file. Delete on failure
if(@!rename($tempDir.$fileName, $finalDir.$fileRenamed)){
  unlink($tempDir.$fileName);
  error("Unable to rename file!");
}

//Change file rights so image will display proberly for ALL users
chmod($finalDir.$fileRenamed, 0644);
       
//Resize of paragraf images
if(ALWAYS_KEEP_ORIGINAL == true){
  @copy($finalDir.$fileRenamed, ORIGINAL_DIR.'ORIG-'.$fileRenamed);
}
if(RESIZE_IMAGES == true){
  //STANDARD IN-LINE IMAGE
  reSizeImage(FINAL_IMAGE_DIR, $fileRenamed, THUMB_IMAGE_WIDTH, THUMB_IMAGE_HEIGHT, THUMB_QUALITY);
}
     
return $fileRenamed;
}



function reSizeImage($imageDir, $imageName, $imageWidth, $imageHeight, $quality){

# Get image data
list($width,$height,$type)= getimagesize($imageDir.$imageName);
       
# Set correct dimensions for new image
$ratioHeight = $imageHeight/$height;
$ratioWidth = $imageWidth/$width;
$ratio = min($ratioWidth, $ratioHeight);
$newWidth = $width * $ratio;
$newHeight = $height * $ratio;

# Create thumb dependent of image type
# Currently only *.JPG is supported
list($filename, $ext) = explode(".", $imageDir.$imageName);
if($ext == "jpg"){
# Create a image in buffer from source image
$src_img = imagecreatefromjpeg($imageDir.$imageName);
           
# Create destination image in buffer with correct dimensions
$dst_img = imagecreatetruecolor($newWidth,$newHeight);
           
# Copy the image from source to destination
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
imagejpeg($dst_img, $imageDir.$renamedImage, QUALITY);
       
# Destroy the buffers
imagedestroy($src_img);
imagedestroy($dst_img);
       
}else{
  error("*.".$ext." is unsupported. Only *.jpg supported in this version");
}
       
return true;       
}
Avatar billede dd-man Nybegynder
06. juli 2003 - 17:22 #4
hej igen....er ikke hjemme endnu..skriver fra mobiltelefonen, og der kan jeg ikke have godt nok overblik over din kode, men svaret på dit tidligere spørgsmål er at jeg ikke ved det... har ikke vildt forstand på gdlib... hvis du kan skrive min kode om, så den vil være mere optimal og...virke, hehe... så vil jeg være yderst taknemlig; tak
Avatar billede dd-man Nybegynder
06. juli 2003 - 20:15 #5
Så er jeg kommet hjem...

jeg kigger lige på dit script engang så...
Avatar billede dd-man Nybegynder
06. juli 2003 - 21:20 #6
rjz:
jeg har kigget på dit, det ser jo også prof. ud og det hele, men jeg kan altså ikke finde ud af at få det indbygget i mit, så det virker... kan du ikke prøve at hjælpe mig med det venligst...
Avatar billede dd-man Nybegynder
11. juli 2003 - 00:29 #7
Nå... du gad vidst ikke mere...

lukker spørgsmålet... brugte en anden metode, som nødløsning.
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