OpenCart 🇺🇦

Схема

public string resize ( string $filename, int $width, int $height, string $type = "" )

Аргументы

Аргумент Возможный тип Описание
$filename string
$width int
$height int
$type = "" string

Описание

Создает уменьшенную копию изображения, сохраняя в папку cache/. При этом, перед $flename будет автоматически подставлено значение константы DIR_IMAGE. (значение константы это папка image/ в корне сайта)

Пример использования:

// вызов из контроллера
$this->model_tool_image->resize('logo.png', 200, 200);

Исходный код

if (!file_exists(DIR_IMAGE . $filename) || !is_file(DIR_IMAGE . $filename)) {
	return;
} 

$info = pathinfo($filename);

$extension = $info['extension'];

$old_image = $filename;
$new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . $type .'.' . $extension;

if (!file_exists(DIR_IMAGE . $new_image) || (filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image))) {
	$path = '';
	
	$directories = explode('/', dirname(str_replace('../', '', $new_image)));
	
	foreach ($directories as $directory) {
		$path = $path . '/' . $directory;
		
		if (!file_exists(DIR_IMAGE . $path)) {
			@mkdir(DIR_IMAGE . $path, 0777);
		}		
	}

	list($width_orig, $height_orig) = getimagesize(DIR_IMAGE . $old_image);

	if ($width_orig != $width || $height_orig != $height) {
		$image = new Image(DIR_IMAGE . $old_image);
		$image->resize($width, $height, $type);
		$image->save(DIR_IMAGE . $new_image);
	} else {
		copy(DIR_IMAGE . $old_image, DIR_IMAGE . $new_image);
	}
}

if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
	return $this->config->get('config_ssl') . 'image/' . $new_image;
} else {
	return $this->config->get('config_url') . 'image/' . $new_image;
}