Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как резать картинки resize onesize cropsize


igorfelix

Recommended Posts

Доброго вечера, на 2.1 был такой код 

<?php
class ModelToolImage extends Model {
	public function resize($filename, $width, $height) {
		if (!is_file(DIR_IMAGE . $filename)) {
			return;
		}

		$extension = pathinfo($filename, PATHINFO_EXTENSION);

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

		if (!is_file(DIR_IMAGE . $new_image) || (filectime(DIR_IMAGE . $old_image) > filectime(DIR_IMAGE . $new_image))) {
			$path = '';

			$directories = explode('/', dirname(str_replace('../', '', $new_image)));

			foreach ($directories as $directory) {
				$path = $path . '/' . $directory;

				if (!is_dir(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);
				$image->save(DIR_IMAGE . $new_image);
			} else {
				copy(DIR_IMAGE . $old_image, DIR_IMAGE . $new_image);
			}
		}

		$imagepath_parts = explode('/', $new_image);
		$new_image = implode('/', array_map('rawurlencode', $imagepath_parts));
		
		if ($this->request->server['HTTPS']) {
			return $this->config->get('config_ssl') . 'image/' . $new_image;
		} else {
			return $this->config->get('config_url') . 'image/' . $new_image;
		}
	}

	function onesize($filename, $maxsize) {
		if (!is_file(DIR_IMAGE . $filename)) {
			return;
		}

		$extension = pathinfo($filename, PATHINFO_EXTENSION);
		
		$old_image = $filename;
		$new_image = 'cache/' . substr($filename, 0, strrpos($filename, '.')) . '-max-' . $maxsize . '.' . $extension;

		if (!is_file(DIR_IMAGE . $new_image) || (filectime(DIR_IMAGE . $old_image) > filectime(DIR_IMAGE . $new_image))) {
			$path = '';

			$directories = explode('/', dirname(str_replace('../', '', $new_image)));
			

			foreach ($directories as $directory) {
				$path = $path . '/' . $directory;

				if (!is_dir(DIR_IMAGE . $path)) {
					@mkdir(DIR_IMAGE . $path, 0777);
				}
			}

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

			$image = new Image(DIR_IMAGE . $old_image);
			$image->onesize($maxsize);
			$image->save(DIR_IMAGE . $new_image);
		}
		
		if ($this->request->server['HTTPS']) {
			return $this->config->get('config_ssl') . 'image/' . $new_image;
		} else {
			return $this->config->get('config_url') . 'image/' . $new_image;
		}
			
	}	
	
}

 

Он позволяет потом резать картинки в нужном модуле, без белых полей.

На 2.3 код не работает, помогите пожалуйста

 

Надіслати
Поділитися на інших сайтах


1 час назад, igorfelix сказал:

На 2.3 код не работает, помогите пожалуйста

На 2.3 есть свой файл image.php - он не работает?

 

 

Надіслати
Поділитися на інших сайтах

13 часов назад, igorfelix сказал:

Он позволяет потом резать картинки в нужном модуле, без белых полей.

 

sDqqPIM.jpg

 

AG7wIXH.jpg

 

Подойдет?

Готовое решение в виде модуля.

Адаптивную обрезку нужного типа можете использовать на определенных страницах для определенных изображений.

Т.е. можно либо настройками в модуле управлять, либо в коде страницы указывать в нужном месте нужный тип ресайза.

 

 

 

13 часов назад, igorfelix сказал:

Он позволяет потом резать картинки в нужном модуле, без белых полей.

 

вы что-то путаете.

 

Надіслати
Поділитися на інших сайтах

21 час назад, esculapra сказал:

На 2.3 есть свой файл image.php - он не работает?

 

 

там есть файл да, но там только resize.

при публикации картинки в модуле Блог например, превьюхи . создаются с белыми полями. Решалась проблема resize заменить на onesize 

 

а вот на 2.3 код от 2.1 видимо не подходит, пытался подправить, не вышло 

 

 

 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.