Automatisk storleksändring utav uppladdade avatarer

Öppna includes/functions_posting.php och hitta create_thumbnail() funktionen.

Den börjar med:

/**
* Create Thumbnail
*/
function create_thumbnail($source, $destination, $mimetype)
{

Den slutar med:

	if (!file_exists($destination))
	{
		return false;
	}

	phpbb_chmod($destination, CHMOD_READ | CHMOD_WRITE);

	return true;
}

Ersätt HELA den sektionen med:

/**
* Create Thumbnail
*/

//	MODIFICATION BY DION DESIGNS
function create_thumbnail($source, $destination, $mimetype, $new_width=0, $new_height=0)
{
//	END MODIFICATION

	global $config;

//	MODIFICATION BY DION DESIGNS
	if ($new_width == 0) {
//	END MODIFICATION

	$min_filesize = (int) $config['img_min_thumb_filesize'];
	$img_filesize = (file_exists($source)) ? @filesize($source) : false;

	if (!$img_filesize || $img_filesize <= $min_filesize) 	{ 		return false; 	} //	MODIFICATION BY DION DESIGNS 	} 	else { 		$destination = $source; 	} //	END MODIFICATION 	$dimension = @getimagesize($source); 	if ($dimension === false) 	{ 		return false; 	} 	list($width, $height, $type, ) = $dimension; 	if (empty($width) || empty($height)) 	{ 		return false; 	} //	MODIFICATION BY DION DESIGNS 	if ($new_width == 0) { 		list($new_width, $new_height) = get_img_size_format($width, $height); 	} 	else if ($height > $new_height || $width > $new_width) {
		$h_ratio = $new_height / $height;
		$w_ratio = $new_width / $width;
		$scale_factor = ($h_ratio < $w_ratio) ? $h_ratio : $w_ratio;
		$new_width = ($h_ratio < $w_ratio) ? round($width * $scale_factor) : $new_width;
		$new_height = ($w_ratio < $h_ratio) ? round($height * $scale_factor) : $new_height; 	} 	else { 		return false; 	} //	END MODIFICATION 	// Do not create a thumbnail if the resulting width/height is bigger than the original one 	if ($new_width >= $width && $new_height >= $height)
	{
		return false;
	}

	$used_imagick = false;

	// Only use imagemagick if defined and the passthru function not disabled
	if ($config['img_imagick'] && function_exists('passthru'))
	{
		if (substr($config['img_imagick'], -1) !== '/')
		{
			$config['img_imagick'] .= '/';
		}

		@passthru(escapeshellcmd($config['img_imagick']) . 'convert' . ((defined('PHP_OS') && preg_match('#^win#i', PHP_OS)) ? '.exe' : '') . ' -quality 85 -geometry ' . $new_width . 'x' . $new_height . ' "' . str_replace('\\', '/', $source) . '" "' . str_replace('\\', '/', $destination) . '"');

		if (file_exists($destination))
		{
			$used_imagick = true;
		}
	}

	if (!$used_imagick)
	{
		$type = get_supported_image_types($type);

		if ($type['gd'])
		{
			// If the type is not supported, we are not able to create a thumbnail
			if ($type['format'] === false)
			{
				return false;
			}

			switch ($type['format'])
			{
				case IMG_GIF:
					$image = @imagecreatefromgif($source);
				break;

				case IMG_JPG:
					@ini_set('gd.jpeg_ignore_warning', 1);
					$image = @imagecreatefromjpeg($source);
				break;

				case IMG_PNG:
					$image = @imagecreatefrompng($source);
				break;

				case IMG_WBMP:
					$image = @imagecreatefromwbmp($source);
				break;
			}

			if (empty($image))
			{
				return false;
			}

			if ($type['version'] == 1)
			{
				$new_image = imagecreate($new_width, $new_height);

				if ($new_image === false)
				{
					return false;
				}

				imagecopyresized($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
			}
			else
			{
				$new_image = imagecreatetruecolor($new_width, $new_height);

				if ($new_image === false)
				{
					return false;
				}

				// Preserve alpha transparency (png for example)
				@imagealphablending($new_image, false);
				@imagesavealpha($new_image, true);

				imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
			}

			// If we are in safe mode create the destination file prior to using the gd functions to circumvent a PHP bug
			if (@ini_get('safe_mode') || @strtolower(ini_get('safe_mode')) == 'on')
			{
				@touch($destination);
			}

			switch ($type['format'])
			{
				case IMG_GIF:
					imagegif($new_image, $destination);
				break;

				case IMG_JPG:
					imagejpeg($new_image, $destination, 90);
				break;

				case IMG_PNG:
					imagepng($new_image, $destination);
				break;

				case IMG_WBMP:
					imagewbmp($new_image, $destination);
				break;
			}

			imagedestroy($new_image);
		}
		else
		{
			return false;
		}
	}

	if (!file_exists($destination))
	{
		return false;
	}

	phpbb_chmod($destination, CHMOD_READ | CHMOD_WRITE);

	return true;
}

Spara och öppna sedan: includes/functions_user.php

Hitta:

	$prefix = $config['avatar_salt'] . '_';
	$file->clean_filename('avatar', $prefix, $data['user_id']);

Ersätt med:

	$prefix = $config['avatar_salt'] . '_';
	
//	MODIFICATION BY DION DESIGNS
	// resize uploaded avatar
	include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
	@ini_set('memory_limit','64M');
	create_thumbnail($file->get('filename'), '', '', $config['avatar_max_width'], $config['avatar_max_height']);
//	END MODIFICATION

	$file->clean_filename('avatar', $prefix, $data['user_id']);

Gå sedan till ACP > Inställningar för visningsbilder och ändra Maximal filstorlek för visningsbilder: till 862144