4images Forum & Community

4images Modifications / Modifikationen => Mods & Plugins (Requests & Discussions) => Topic started by: Sunny C. on October 14, 2008, 10:33:00 AM

Title: [Mod] Automatisch Bilder verkleinern beim Upload
Post by: Sunny C. on October 14, 2008, 10:33:00 AM
Thanks to V@no fot this Mod in english: http://www.4homepages.de/forum/index.php?topic=7700.msg17274#msg17274

Diese Mod verkleiner beim Upload die Bilder zu einer eingestellten Max. Breite.
Working on v1.7 - v1.7.4 - v1.7.6


-----------------------------------------------
Dateien die editiert werden:
member.php
includes/upload.php
admin/settings.php
lang/<yourlanguage>/admin.php

-----------------------------------------------


Step 1 (Updated 19/09/04)
Öffne /member.php

Finde:
Code: [Select]
    if (!$uploaderror) {
Füge darüber (Wenn du die Mod "Annotation by SLL" Dann wirst du in eine kleine Änderung machen müssen Step 7):
Code: [Select]
//--------------------------------------------
//--------- Auto Image Resizing --------------
//--------------------------------------------
                  if ($config['auto_image'] && !$uploaderror) {
                     if ($direct_upload) {
                        $src = MEDIA_PATH."/".$cat_id."/".$new_name;
                    }
                    else {
                        $src = MEDIA_TEMP_PATH."/".$new_name;
                    }
                    $do_resize = 0;
               if ($image_info = @getimagesize($src)) {
                       if ($image_info[2] == 1 || $image_info[2] == 2 || $image_info[2] == 3) {
                          $do_resize = 1;
                    }
                  }
                  if ($do_resize) {
                     if (!function_exists(init_convert_options)) {
                           require(ROOT_PATH.'includes/image_utils.php');
                        }
                  if ($image_info[0] > $config['max_image_width'] || $image_info[1] > $config['max_image_height']) {
                       $convert_options = init_convert_options();
                       if (!$convert_options['convert_error']) {
                         $quality = (intval($config['auto_image_quality']) && intval($config['auto_image_quality']) <= 100) ? intval($config['auto_image_quality']) : 100;
                        if (!resize_image($src, $quality, $config['max_image_width'], 1, $config['max_image_height'])) {
                           $msg .= (($msg != "") ? "<br />" : "")."<b>".$lang['file_upload_error'].": ".$new_name;
                                 $uploaderror = 1;
                          }
                           }
                        }
                     }
                  }
//-------------------------------------------




Step 2
Öffne /includes/upload.php

Finde:
Code: [Select]
    $this->max_height['media'] = $config['max_image_height'];
Füge darunter:
Code: [Select]
      $this->auto_image['media'] = $config['auto_image'];


Step 2.2
Finde:
Code: [Select]
    if ($this->image_size[1] > $this->max_height[$this->image_type]) {
      $ok = 0;
      $this->set_error($this->lang['invalid_image_height']);
    }


Füge darunter:
Code: [Select]
      if ($this->auto_image[$this->image_type]) {
         $ok = 1;
      }




Step 3
Öffne /admin/settings.php

Finde:
Code: [Select]
  show_setting_row("upload_emails");
Füge darunter:
Code: [Select]
  show_setting_row("auto_image", "radio");
  show_setting_row("auto_image_quality");


Step 4
Öffne /lang/<yourlanguage>/admin.php

Finde:
Code: [Select]
$setting['auto_thumbnail_quality'] = "Thumbnail quality<br /><span class=\"smalltext\">0 to 100</span>";
Füge darunter:
Code: [Select]
$setting['auto_image'] = "Bild Auto-Groesse";
$setting['auto_image_quality'] = "Bild Auto-Grösse Qualitaet";




Step 5
Download "Autoimage Install (http://www.4homepages.de/forum/index.php?action=dlattach;topic=7700.0;attach=874)" file.

Entpacke alles und packe in deinem 4images ROOT-Verzeichnis.
Starte die Installation so: http://yoursiteaddress/4images/install_autoimage.php


Step 6
Gehe in deinem Adminpanel -> Einstellungen. Unter Upload Einstellungen findest du neue Optionen.


Step 7
Diesen Step brauchst du nur wenn du den Mod "Annotation by SLL" installiert hast!
Den Code aus Step 1, füge ihn nicht wie dort beschrieben darüber, sondern unter der besagten Stelle.
Beispiel:
öffne /member.php
Suche:
Code: [Select]
//--------------------------------------------
//--------- Auto Image Resizing --------------
//--------------------------------------------
                  if ($config['auto_image'] && !$uploaderror) {
                     if ($direct_upload) {
                        $src = MEDIA_PATH."/".$cat_id."/".$new_name;
                    }
                    else {
                        $src = MEDIA_TEMP_PATH."/".$new_name;
                    }
                    $do_resize = 0;
               if ($image_info = @getimagesize($src)) {
                       if ($image_info[2] == 1 || $image_info[2] == 2 || $image_info[2] == 3) {
                          $do_resize = 1;
                    }
                  }
                  if ($do_resize) {
                     if (!function_exists(init_convert_options)) {
                           require(ROOT_PATH.'includes/image_utils.php');
                        }
                  if ($image_info[0] > $config['max_image_width'] || $image_info[1] > $config['max_image_height']) {
                       $convert_options = init_convert_options();
                       if (!$convert_options['convert_error']) {
                         $quality = (intval($config['auto_image_quality']) && intval($config['auto_image_quality']) <= 100) ? intval($config['auto_image_quality']) : 100;
                        if (!resize_image($src, $quality, $config['max_image_width'], 1, $config['max_image_height'])) {
                           $msg .= (($msg != "") ? "<br />" : "")."<b>".$lang['file_upload_error'].": ".$new_name;
                                 $uploaderror = 1;
                          }
                           }
                        }
                     }
                  }
//-------------------------------------------
Lösche den Code!

Suche:
Code: [Select]
    if (!$uploaderror) {Füge darunter das ein:
Code: [Select]
//--------------------------------------------
//--------- Auto Image Resizing --------------
//--------------------------------------------
                  if ($config['auto_image'] && !$uploaderror) {
                     if ($direct_upload) {
                        $src = MEDIA_PATH."/".$cat_id."/".$new_name;
                    }
                    else {
                        $src = MEDIA_TEMP_PATH."/".$new_name;
                    }
                    $do_resize = 0;
               if ($image_info = @getimagesize($src)) {
                       if ($image_info[2] == 1 || $image_info[2] == 2 || $image_info[2] == 3) {
                          $do_resize = 1;
                    }
                  }
                  if ($do_resize) {
                     if (!function_exists(init_convert_options)) {
                           require(ROOT_PATH.'includes/image_utils.php');
                        }
                  if ($image_info[0] > $config['max_image_width'] || $image_info[1] > $config['max_image_height']) {
                       $convert_options = init_convert_options();
                       if (!$convert_options['convert_error']) {
                         $quality = (intval($config['auto_image_quality']) && intval($config['auto_image_quality']) <= 100) ? intval($config['auto_image_quality']) : 100;
                        if (!resize_image($src, $quality, $config['max_image_width'], 1, $config['max_image_height'])) {
                           $msg .= (($msg != "") ? "<br />" : "")."<b>".$lang['file_upload_error'].": ".$new_name;
                                 $uploaderror = 1;
                          }
                           }
                        }
                     }
                  }
//-------------------------------------------


Step 8 (HÖHEN FIX) (Added 19/09/04) Original by V@no
Dieser Step ist nicht von wichtigkeit. Mit diesem Step, wird auch die Höhe mit eingebracht. Ich pers. finde das von nutzen.
Wie gesagt, ist aber kein muss.

Step 8.1
Öffne: includes/image_utils.php
Finde:
Code: [Select]

function get_width_height($dimension, $width, $height, $resize_type = 1) {
  if ($resize_type == 2) {
    $new_width = $dimension;
    $new_height = floor(($dimension/$width) * $height);
  }
  elseif ($resize_type == 3) {
    $new_width = floor(($dimension/$height) * $width);
    $new_height = $dimension;
  }
  else {
    $ratio = $width / $height;
    if ($ratio > 1) {
      $new_width = $dimension;
      $new_height = floor(($dimension/$width) * $height);
    }
    else {
      $new_width = floor(($dimension/$height) * $width);
      $new_height = $dimension;
    }
  }
  return array("width" => $new_width, "height" => $new_height);
}


Ersetze mit:
Code: [Select]
function get_width_height($w, $width, $height, $resize_type = 1, $h = 0) {
  $h = ($h) ? $h : $w;
  if ($resize_type == 2) {
    $new_width = $w;
    $new_height = round(($w/$width) * $height);
  }
  elseif ($resize_type == 3) {
    $new_width = round(($h/$height) * $width);
    $new_height = $h;
  }
  else {
    $new_width = min ($w, $width);
    $new_height = min ($h, $height);
    $p = ($w > $h) ? $width / $height : $height / $width;
    if ($p > 1)
      $new_height = round($height * $new_width / $width);
    elseif ($p < 1)
      $new_width = round($width * $new_height / $height);
    if ($new_width > $w || $new_height > $h)
    {
      $new_width = min ($w, $new_width);
      $new_height = min ($h, $new_height);
      $p = ($w > $h) ? $height / $width : $width / $height;
      if ($p > 1)
        $new_height = round($height * $new_width / $width);
      elseif ($p < 1)
        $new_width = round($width * $new_height / $height);
    }
  }
  return array("width" => $new_width, "height" => $new_height);
}



Step 8.1.2
Finde:
Code: [Select]
function resize_image($file, $quality, $dimension, $resize_type = 1) {

Ersetze mit:
Code: [Select]
function resize_image($file, $quality, $dimension, $resize_type = 1, $height = 0) {


Step 8.1.3
Finde:
Code: [Select]
  $width_height = get_width_height($dimension, $image_info[0], $image_info[1], $resize_type);

Ersetze mit:
Code: [Select]
  $width_height = get_width_height($dimension, $image_info[0], $image_info[1], $resize_type, $height);


Step 8.2
Öffne admin/resizer.php
Finde:
Code: [Select]
  $dimension = (isset($HTTP_POST_VARS['dimension'])) ? intval($HTTP_POST_VARS['dimension']) : 200;
  $resize_type = (isset($HTTP_POST_VARS['resize_type'])) ? intval($HTTP_POST_VARS['resize_type']) : 1;


Ersetze mit:
Code: [Select]
  $dimension = (isset($HTTP_POST_VARS['dimension'])) ? intval($HTTP_POST_VARS['dimension']) : $config['max_image_width'];
  $height = (isset($HTTP_POST_VARS['height'])) ? intval($HTTP_POST_VARS['height']) : $config['max_image_height'];
  $resize_type = (isset($HTTP_POST_VARS['resize_type'])) ? intval($HTTP_POST_VARS['resize_type']) : $config['auto_thumbnail_resize_type'];



Step 8.2.2
Finde:
Code: [Select]
  $dimension = (isset($HTTP_POST_VARS['dimension'])) ? intval($HTTP_POST_VARS['dimension']) : 200;
  $resize_type = (isset($HTTP_POST_VARS['resize_type'])) ? intval($HTTP_POST_VARS['resize_type']) : 1;


Ersetze mit:
Code: [Select]
  $dimension = (isset($HTTP_POST_VARS['dimension'])) ? intval($HTTP_POST_VARS['dimension']) : $config['max_image_width'];
  $height = (isset($HTTP_POST_VARS['height'])) ? intval($HTTP_POST_VARS['height']) : $config['max_image_height'];
  $resize_type = (isset($HTTP_POST_VARS['resize_type'])) ? intval($HTTP_POST_VARS['resize_type']) : $config['auto_thumbnail_resize_type'];



Step 8.2.3
Finde:
Code: [Select]
  show_input_row($lang['resize_dimension_desc'], "dimension", $dimension);

Ersetze mit:
Code: [Select]
  show_input_row($lang['max_imagewidth'], "dimension", $dimension);
  show_input_row($lang['max_imageheight'], "height", $height);



Step 8.2.4
Finde:
Code: [Select]
  $dimension = (isset($HTTP_POST_VARS['dimension'])) ? intval($HTTP_POST_VARS['dimension']) : 200;

Ersetze mit:
Code: [Select]
  $dimension = (isset($HTTP_POST_VARS['dimension'])) ? intval($HTTP_POST_VARS['dimension']) : $config['max_image_height'];
  $height = (isset($HTTP_POST_VARS['height'])) ? intval($HTTP_POST_VARS['height']) : $config['max_image_height'];


Step8. 2.5
Finde:
Code: [Select]
          if ($resize_type == 1 && ($image_info[0] > $dimension || $image_info[1] > $dimension)) {

Ersetze mit:
Code: [Select]
          if ($resize_type == 1 && ($image_info[0] > $dimension || $image_info[1] > $height)) {


Step 8.2.6
Find:
Code: [Select]
          elseif ($resize_type == 3 && $image_info[1] > $dimension) {

Ersetze mit:
Code: [Select]
          elseif ($resize_type == 3 && $image_info[1] > $height) {


Step 8.2.7
Finde:
Code: [Select]
            $width_height = get_width_height($dimension, $image_info[0], $image_info[1], $resize_type);

Ersetze mit:
Code: [Select]
            $width_height = get_width_height($dimension, $image_info[0], $image_info[1], $resize_type, $height);


Step 8.2.8
Finde:
Code: [Select]
    show_hidden_input("dimension", $dimension);

Füge darüber:
Code: [Select]
    show_hidden_input("height", $height);


Video Tutorial (English)
http://www.asian-lady.org/tutors/resize-mod/resize-mod.html
Title: Re: [Mod] Automatisch Bilder verkleinern beim Upload
Post by: mawenzi on October 14, 2008, 01:01:21 PM
... was soll das ... ?
... wenn du hier deine neuen Übersetzungsfähigkeiten präsentieren möchtest ...
... dann mache das bitte in den entsprechenden Threads ...
... mit deiner Vorgehensweise zersplittest du Aktualisierung und Weiterentwicklung der MODs ...
... und das gilt für alle gleichgelagerten "Übersetzungen" ...
... Thread geschlossen ...