[Album] Frage zu ADD-ONs/MODs

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

[Album] Frage zu ADD-ONs/MODs

Beitrag von Christian_N »

Habe dazu nichts gefunden, also beim Nuffload kann man im ACP einstellen das er die Bilder autom. verkleinert spricht wenn ein Bild 800x600 Pixel hat und im ACP bei beides 750 Pixel eingestellt ist, wird es auf 750pixel verkleinert selbstverständlich bleibt dann auch die breite (600pixel) nicht sonder wird auch dem entsprechend angepasst.

Jetzt würde ich gerne aber den Nuffload ausbauen, weil nur wegen die eine Funktion den drin zu lassen finde ich etwas Verschwendung, daher die Frage gibt es vllt. ein Add-ON der wo man diese auch autom. beim Upload verkleinert werden die Bilder wie bei Nuffload oder müsste sowas erst gebastelt werden? Wäre eine interessante Erweiterung jedenfalls.
[MOD]Resize picture on upload.. no more upload limit
EDIT: Extra Information hinzugefügt....
EDIT2: Extra Information & Titel angepasst....

Gruß Chris
Zuletzt geändert von Christian_N am Do 11.Jan, 2007 14:04, insgesamt 4-mal geändert.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Das müsste erst gebastelt werden.
Wäre theoretisch aber nicht solch ein riesen Ding, da man hochgeladenen Dateien ja auch bearbeiten kann, bevor man sie irgendwo reinstellt.
Also auch nach dem Einfügen in die Album-Tabellen halt vorher verkleinert...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Max
Beiträge: 628
Registriert: So 23.Jan, 2005 09:54

Beitrag von Max »

[quote="oxpus";p="68552"]Das müsste erst gebastelt werden.[/quote]


Gibt es aber schon: [MOD]Resize picture on upload.. no more upload limit

Funktioniert ganz gut und wenn man sich an der Begrenzung, dass man nur (vor dem Anpassen) 1mb große Dateien hochladen kann, sört, kann man das im Code ändern - davon ist aber abzuraten, da hierfür die Ausführungszeiten der Scripte entscheidend sind - ist das File zu groß, bricht der Server die Anpassung ab und man nur noch eine weiße Seite + eine Dateileiche auf dem Server (das zu große Bild ist dann zum Teil auf dem Server)


Gruß Max
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ah ja, wieder was gelernt. Danke @Max ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

Genau, da wars, hatte doch diese titel gelesen gehabt aber nicht mehr gefunden gehabt gestern *g* Danke Max erstmal.

Mal ausprobieren wie es so läuft.

EDIT: Was gibt es an Multi Uploader alles?
Also bei Nuffload war so da konnte man ZIP Dateien hochladen sowas wäre echt klasse, aber hab in die richtig nichts gesehen ausser ein Multi Uploader der ja nicht gerade sehr prickelt ist, bei des mit ZIP war es schon besser.
Nun ja, mal gespannt welche es geben und empfehlen könnte?

EDIT2: Habe jetzt folgende MODs im Album verbaut:
Album Photo Upload Directory HACK
[MOD]Resize picture on upload.. no more upload limit
No Double Images (Smartor Album)

Also wenn ich die Bilder einzel hochlade dann funktioniert des Resize und auch das mit dem No Double Mod, allerdings wenn ich den Hack benutze um mehre Bilder aus einen Ordner/Verzeichnis hochzuladen funktionieren die beide MODs nicht, er lädt die Bilder hoch auch doppelt und wenn die größer sind als im ACP steht, dann kommt die Information Bilderupload erfolgreich und die liste die nicht hochgeladenen Bilder/Thumbnails weil die Bilder größer sind als im ACP eingestellt, da müsste sicher noch was angepasst werden das er diese Bilder auch Resize tun.

den No Double Images werde ich wahrscheinlich eh ausbauen, wollte den nur mal so testen...

Wäre jedenfalls klasse, wenn man mir sagen kann was ich bei die album_upload.php anpassen muss damit er dort auch resize tut.

Ich glaube das ist die lange Code Zeile hier die darauf angepasst werden müsste:

Code: Alles auswählen

}//end if exist directory
else
{
	$file_name_tab = array();
	$thumbnail_name_tab = array();
	
	if($dir = @opendir($pic_directory))
	{
		// --------------------------------
		// Check username for guest posting
		// --------------------------------
		if (!$userdata['session_logged_in'])
		{
			if ($pic_username != '')
			{
				$result = validate_username($pic_username);
				if ( $result['error'] )
				{
					message_die(GENERAL_MESSAGE, $result['error_msg']);
				}
			}
		}

		// --------------------------------
		// Prepare variables
		// --------------------------------
		$exist_pic_title = true;
		if(!isset($pic_title) || $pic_title == "none" || $pic_title == "")
			$exist_pic_title = false;

		$pic_time = time();
		$pic_user_id = $userdata['user_id'];
		$pic_user_ip = $userdata['session_ip'];

		//For each found file
		while($file = @readdir($dir))
		{
			$filename = $pic_directory."/".$file;

			if((@is_file($filename)) && (preg_match('/(\.gif$|\.png$|\.jpg)$/is', $file)))
			{
				// --------------------------------
				// Get File Upload Info
				// --------------------------------
				ereg( ".*\.([a-zA-Z0-9]{0,5})$", $filename, $type );
				$pic_filetype = ".".$type[1];
				$filesize = @filesize($filename);
				$types['image'] = array ('.jpg', '.gif','.png');
				foreach ($types as $k => $v)
				{
					if (in_array($pic_filetype, $v))
					{
						if(!$exist_pic_title)
							$pic_title = $file;

						$thumbtmp = $thumbnail_pic_directory."/".str_replace($pic_filetype, $album_config['thumbnail_ext'].$pic_filetype, $file);
						
						// --------------------------------
						// Check file size
						// --------------------------------
						if(!( ($filesize == 0) or ($filesize > $album_config['max_file_size'])))
						{
							if ($album_config['gd_version'] == 0)
							{
								$thumbfileok = false;
								if(@is_file($thumbtmp))
									$thumbfileok = true;
					
								$thumbsizeok = true;
								$thumbsize = @filesize($thumbtmp);
								if( ($thumbsize == 0) or ($thumbsize > $album_config['max_file_size']) )
									$thumbsizeok = false;
							}

							// --------------------------------
							// Generate filename
							// --------------------------------
							srand((double)microtime()*1000000);	// for older than version 4.2.0 of PHP
						
							do
							{
								$pic_filename = md5(uniqid(rand())) . $pic_filetype;
							}
							while( file_exists(ALBUM_UPLOAD_PATH . $pic_filename) );
							
							if (($album_config['gd_version'] == 0) && $thumbsizeok && $thumbfileok)
								$pic_thumbnail = $pic_filename;
							else
								$pic_thumbnail = '';
						
							// --------------------------------
							// Move this file to upload directory
							// --------------------------------
							@copy($filename, ALBUM_UPLOAD_PATH . $pic_filename);
							@chmod(ALBUM_UPLOAD_PATH . $pic_filename, 0777);
						
							if (($album_config['gd_version'] == 0) && $thumbsizeok && $thumbfileok)
							{
								@copy($thumbtmp, ALBUM_CACHE_PATH . $pic_thumbnail);
								@chmod(ALBUM_CACHE_PATH . $pic_thumbnail, 0777);
							}
	
							// --------------------------------
							// Well, it's an image. Check its image size
							// --------------------------------

							$file_ok = true;
							list($pic_width, $pic_height) = @getimagesize(ALBUM_UPLOAD_PATH . $pic_filename);
							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);
								
								$file_ok = false;
								//add in tab of error uploaded pic and thumbnail
								$file_name_tab[] = $filename;
								$thumbnail_name_tab[] = $thumbtmp;
							}
						
							$thumbnail_ok = true;
							if (($album_config['gd_version'] == 0) && $file_ok)
							{
								list($thumb_width, $thumb_height) = @getimagesize(ALBUM_CACHE_PATH . $pic_thumbnail);
								if ( ($thumb_width > $album_config['thumbnail_size']) or ($thumb_height > $album_config['thumbnail_size']) )
								{
									@unlink(ALBUM_UPLOAD_PATH . $pic_filename);
									@unlink(ALBUM_CACHE_PATH . $pic_thumbnail);
						
									$thumbnail_ok = false;
									//add in tab of error uploaded pic and thumbnail
									$file_name_tab[] = $filename;
									$thumbnail_name_tab[] = $thumbtmp;
								}
							}

							// --------------------------------
							// This image is okay, we can cache its thumbnail now
							// --------------------------------
							if( ($album_config['thumbnail_cache'] == 1) and ($pic_filetype != '.gif') and ($album_config['gd_version'] > 0) )
							{
								$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 = '';
								}
								else if( ($pic_width > $album_config['thumbnail_size']) or ($pic_height > $album_config['thumbnail_size']) )
								{
									// Resize it
									if ($pic_width > $pic_height)
									{
										$thumbnail_width = $album_config['thumbnail_size'];
										$thumbnail_height = $album_config['thumbnail_size'] * ($pic_height/$pic_width);
									}
									else
									{
										$thumbnail_height = $album_config['thumbnail_size'];
										$thumbnail_width = $album_config['thumbnail_size'] * ($pic_width/$pic_height);
									}
						
									$thumbnail = ($album_config['gd_version'] == 1) ? @imagecreate($thumbnail_width, $thumbnail_height) : @imagecreatetruecolor($thumbnail_width, $thumbnail_height);
						
									$resize_function = ($album_config['gd_version'] == 1) ? 'imagecopyresized' : 'imagecopyresampled';
						
									@$resize_function($thumbnail, $src, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $pic_width, $pic_height);
								}
								else
								{
									$thumbnail = $src;
								}
						
								if (!$gd_errored)
								{
									$pic_thumbnail = $pic_filename;
						
									// Write to disk
									switch ($pic_filetype)
									{
										case '.jpg':
											@imagejpeg($thumbnail, ALBUM_CACHE_PATH . $pic_thumbnail, $album_config['thumbnail_quality']);
											break;
										case '.png':
											@imagepng($thumbnail, ALBUM_CACHE_PATH . $pic_thumbnail);
											break;
									}
						
									@chmod(ALBUM_CACHE_PATH . $pic_thumbnail, 0777);
						
								} // End IF $gd_errored
						
							} // End Thumbnail Cache
							else if ($album_config['gd_version'] > 0)
							{
								$pic_thumbnail = '';
							}
						
							// --------------------------------
							// Check Pic Approval
							// --------------------------------
							$pic_approval = ($thiscat['cat_approval'] == 0) ? 1 : 0;
						
							// --------------------------------
							// Insert into DB if file and thumbnail are ok !
							// --------------------------------
							if($file_ok && $thumbnail_ok)
							{
								$sql = "INSERT INTO ". ALBUM_TABLE ." (pic_filename, pic_thumbnail, pic_title, pic_desc, pic_user_id, pic_user_ip, pic_username, pic_time, pic_cat_id, pic_approval)
										VALUES ('$pic_filename', '$pic_thumbnail', '$pic_title', '$pic_desc', '$pic_user_id', '$pic_user_ip', '$pic_username', '$pic_time', '$cat_id', '$pic_approval')";
								if( !$result = $db->sql_query($sql) )
								{
									message_die(GENERAL_ERROR, 'Could not insert new entry', '', __LINE__, __FILE__, $sql);
								}
							}
						}//end size file ok
						else
						{
							//add in tab of error uploaded pic and thumbnail
							$file_name_tab[] = $filename;
							$thumbnail_name_tab[] = $thumbtmp;
						}
					} //end if(array())
				}//end foreach()
			}//end is_file()
		}//end while readdir()
		
		@closedir($dir);
		
		// --------------------------------
		// Complete... now send a message to user
		// --------------------------------
		$message = $lang['Album_all_upload_successful'];

		//List of file and thumbnail not uploaded
		if(@sizeof($file_name_tab)>0)
			$message .= "<BR><BR>".$lang['Pic_List_Error']."<BR>";
		for($i=0;$i<@sizeof($file_name_tab);$i++)
			$message .= $file_name_tab[$i]."<BR>";
		if(@sizeof($thumbnail_name_tab)>0)
			$message .= "<BR>".$lang['Thumbnail_List_Error']."<BR>";
		for($i=0;$i<@sizeof($thumbnail_name_tab);$i++)
			$message .= $thumbnail_name_tab[$i]."<BR>";
	}
	else
	{
		//Directory not exist !
		message_die(GENERAL_MESSAGE, $lang['Directory_not_exist']);
	}
}//end if else upload to directory
EDIT3: Bin mir nicht sicher aber wie es aussieht hat es geklappt jedenfalls hat er die 3Bilder die im Verzeichnis "bilder" waren hochgeladen obwohl die mehr als 750Pixel hatten und im Album sind die 3 Bilder auch drin mit 750 Pixel (also verkleinert).

Habe folgendes bei dem oben genannte Code (von EDIT2:) geändert:

ÖFFNE: album_upload.php

FINDE:

Code: Alles auswählen

							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);
								
								$file_ok = false;
								//add in tab of error uploaded pic and thumbnail
								$file_name_tab[] = $filename;
								$thumbnail_name_tab[] = $thumbtmp;
							}
ERSETZE MIT:

Code: Alles auswählen

   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);
         }
		$file_ok = false;
		//add in tab of error uploaded pic and thumbnail
		$file_name_tab[] = $filename;
		$thumbnail_name_tab[] = $thumbtmp;
	}
   }
- FERTIG.

Hoffe, das des alles war, jedenfalls ging der Test Upload vom Verzeichnis aus ohne Probleme damit. :-)

Falls jemand auch diese beide MODs im Album einsetzen sollte, hat die Person nun mal schon den Code dafür. :-D
Zuletzt geändert von Christian_N am Do 11.Jan, 2007 22:46, insgesamt 3-mal geändert.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Antworten