Seite 1 von 2

Photo Album Smartor - automatisch Bilder verkleinern

Verfasst: 29.01.2005 20:11
von stoni81
Hallo, ich suche einen Mod der automatisch bei Upload der Bilder diese vekleinert.


Ich hatte sowas schon mal wo gesehen aber ich finde das nicht und suche schon irr lange umher.

Kann mir wer helfen.

Verfasst: 14.02.2005 16:44
von mgutt
hätte ich auch gerne :D

Verfasst: 15.02.2005 13:28
von Max
na dann:

Code: Alles auswählen

open album_upload.php 

find: 

Code: 

   if( ($filesize == 0) or ($filesize > $album_config['max_file_size']) ) 
   { 
      message_die(GENERAL_MESSAGE, $lang['Bad_upload_file_size']); 
   } 
 



replace with 

Code: 

   if( ($filesize == 0) or ($filesize > 1024000) ) 
   { 
      message_die(GENERAL_MESSAGE, $lang['Bad_upload_file_size']); 
   } 
   $recompress = 0; 
   if ($filesize > $album_config['max_file_size']) 
   { 
      $recompress = 1; 
   } 
 


find: 

Code: 

   if ( ($pic_width > $album_config['max_width']) or ($pic_height > $album_config['max_height']) ) 
   { 
      @unlink(ALBUM_UPLOAD_PATH . $pic_filename); 

      if ($album_config['gd_version'] == 0) 
      { 
         @unlink(ALBUM_CACHE_PATH . $pic_thumbnail); 
      } 

      message_die(GENERAL_ERROR, $lang['Upload_image_size_too_big']); 
   } 
 


replace with: 

Code: 

   if ( (($pic_width > $album_config['max_width']) or ($pic_height > $album_config['max_height'])) OR ($recompress == 1) ) 
   { 
      if ($album_config['gd_version'] == 0) 
      { 
         @unlink(ALBUM_UPLOAD_PATH . $pic_filename); 
         @unlink(ALBUM_CACHE_PATH . $pic_thumbnail); 
         message_die(GENERAL_ERROR, $lang['Upload_image_size_too_big']." Error code: 001"); 
      } 
      $gd_errored = FALSE; 
          

         switch ($pic_filetype) 
         { 
            case '.jpg': 
               $read_function = 'imagecreatefromjpeg'; 
               break; 
            case '.png': 
               $read_function = 'imagecreatefrompng'; 
               break; 
         } 

         $src = @$read_function(ALBUM_UPLOAD_PATH  . $pic_filename); 

         if (!$src) 
         { 
            $gd_errored = TRUE; 
            $pic_thumbnail = ''; 
         } 

         if (($pic_width > $album_config['max_width']) or ($pic_height > $album_config['max_height'])) 
         { 
            if ($pic_width > $pic_height) 
            { 
               $new_width = $album_config['max_width']; 
               $new_height = $album_config['max_width'] * ($pic_height/$pic_width); 
            } 
            else 
            { 
               $new_height = $album_config['max_height']; 
               $new_width = $album_config['max_height'] * ($pic_width/$pic_height); 
            } 
         } 
         else 
         { 
            $new_width = $pic_width; 
            $new_height = $pic_height; 

         } 
         $new_pic = ($album_config['gd_version'] == 1) ? @imagecreate($new_width, $new_height) : @imagecreatetruecolor($new_width, $new_height); 

         $resize_function = ($album_config['gd_version'] == 1) ? 'imagecopyresized' : 'imagecopyresampled'; 

         @$resize_function($new_pic, $src, 0, 0, 0, 0, $new_width, $new_height, $pic_width, $pic_height); 
       
       
      if (!$gd_errored) 
      { 
         // print $recompress ."<br>".$pic_filename; exit; 
         // overwrite old image 
         @unlink(ALBUM_UPLOAD_PATH . $pic_filename); 
          
         switch ($pic_filetype) 
         { 
            case '.jpg': 
               @imagejpeg($new_pic, ALBUM_UPLOAD_PATH . $pic_filename, 80); 
               break; 
            case '.png': 
               @imagepng($new_pic, ALBUM_UPLOAD_PATH . $pic_filename); 
               break; 
         } 
          
         @chmod(ALBUM_CACHE_PATH . $pic_thumbnail, 0777); 
         $pic_width = $new_width; 
         $pic_height = $new_height; 
      } // End IF $gd_errored 
      else 
      { 
         @unlink(ALBUM_UPLOAD_PATH . $pic_filename); 

         if ($album_config['gd_version'] == 0) 
         { 
            @unlink(ALBUM_CACHE_PATH . $pic_thumbnail); 
         } 

         message_die(GENERAL_ERROR, $lang['Upload_image_size_too_big']." Error code: 002"); 
      } 
   } 
 

I added to error codes Error code: 001 and Error code: 002.. but its for debugging only.. so you know what happened if a user sends u a mail saying he got that code as the output text is the same... error code 1, picture is to big and you don't have gd installed.. 
error code 2 there was a gd error... 


and in lang_main_album.php 
add these three at the end before the ?> 

Code: 
$lang['Max_file_size'] = 'Maximum file size before recompression (bytes)'; 
$lang['Max_width'] = 'Maximum image width before recompression (pixel)'; 
$lang['Max_height'] = 'Maximum image height before recompression  (pixel)'; 


i hope it works for you to.. 
I only tested it with GD2 and i don't allow uploading of gifs... 
(thats why feedback is interesting) 
Ich habe leider grad den Link auf den original-Thread nicht, aber es ist auf Smartors Seite zu finden.

Sollte das nicht gehen, weil nach dem Upload des Bildes eine weiße Seite kommt, kann man in der .htaccess folgendes eintragen (auch von Smartors Seite geholt der Tipp) :

Code: Alles auswählen

php_flag register_globals on 
<FilesMatch "\.(php|html?)$"> 
php_value upload_max_filesize 8M 
php_value memory_limit 40M 
php_value max_execution_time 300 
php_value max_input_time 300 
</FilesMatch> 
Das funktioniert beides bei mir, da das eine Forum ein serverseitg enger gestecktes Uploadlimit hatte, musste ich dort das mit der .htaccess regulieren.

Dann gibt es wohl noch eine Möglichkeit, warum eine weiße Seite erscheint, das habe ich aber nicht gehabt, daher auch nicht weiterverfolgt...

Und wenn alles nicht geht, dann liegt das wohl an der GD-Geschichte.



Gruß Max

Verfasst: 25.03.2005 00:08
von Garfield312
Dieser Mod hat bei mir nicht gefunzt, dafür dieser (auch von Smartors Seite) :

http://www.crh.pwp.blueyonder.co.uk/auto_resizer.zip

Prima Sache, 1 Min. Installation und schön komfortabel übers ACP zu konfigurieren :grin:

Verfasst: 25.03.2005 01:05
von Toni
Hallo,

weiss zufaellig jemand, ob es etwas aehnliches auch fuer den Attachment-Mod gibt ?

Gruss Toni

Verfasst: 25.03.2005 09:13
von Garfield312
In der Art wüßte ich es jetzt nicht, aber ich habe bei mir das Simple Image Resize für den Attach-Mod eingebaut. Funktioniert auch gut.

Das hatte ich irgendwo gefunden, frag aber nicht wo, ich weiß es nicht mehr.

Verfasst: 25.03.2005 20:47
von Garfield312
@Toni:

Ich habs per Zufall wiedergefunden :

"Bild im Attachment-Mod automatisch verkleinern auf Bildschirmbreite :"
Ok wunderbar

also das ist eine Alternative für die Leute:

- die die Thumbnail-Funktion vom Attachment Mod nicht ans laufen kriegen
- die falsche Farben in den Thumbnails haben und auch das nicht behoben bekommen

Hier der Originalcode in der viewtopic_attach_body.tpl :

Code: Alles auswählen

   <tr>
      <td colspan="2" align="center"><br /><img src="{postrow.attach.cat_images.IMG_SRC}" alt="{postrow.attach.cat_images.DOWNLOAD_NAME}" border="0" /><br /><br /></td>
   </tr>
ändern in:

Code: Alles auswählen

   <tr>
      <td colspan="2" align="center"><br /><img src="{postrow.attach.cat_images.IMG_SRC}" onload="javascript:if(this.width > screen.width-400)this.width = (screen.width-400)" onclick="javascript:window.open('{postrow.attach.cat_images.IMG_SRC}','','scrollbars=1,toolbar=0,resizable=1,menubar=0,directories=0,status=0')" alt="F&uuml;r Originalgr&ouml;ße auf das Bild klicken." title="F&uuml;r Originalgr&ouml;ße auf das Bild klicken." border="0" /><br /><br /></td>
   </tr>
Übrigens "-400" finde ich besser bei einer Auflösung von 1024x768
Ist zwar nicht ganz die feine Lösung, funzt aber :grin:

Verfasst: 26.03.2005 01:07
von Toni
Hallo Garfield312,

das ist nicht ganz das, was ich suche.

Habe ja die Thumbnails im Attachmant-Mod am laufen. Habe da pro Datei max. 256 kb erlaubt.

Wuerde da jetzt gerne bei Bildern die Qualitaet senken (komprimieren), damit die Bilddatei kleiner wird.
Koennte somit viel Speicherplatz sparen. Optisch waere es (kaum) nicht bemerkbar.

Gruss Toni

Verfasst: 28.03.2005 23:50
von celsius
@ max

hi und danke, der gepostete mod funktioniert prächtig.

der "auto resizer" über den link von garfield312 funzte nicht - keine fehlermeldung aber auch keine funktion.

danke!

Verfasst: 30.03.2005 11:01
von Garfield312
@Celsius:

Hattest du den Autoresizer denn richtig übers ACP konfiguriert ? Nur vorsichtshalber gefragt.