Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Модуль для массового сжатия фото в формате jpg


Ezik
 Погделиться

Рекомендованные сообещёния

Добрый гдень. Ищу модуль для уменьшения размера фото в формате jpg. Сейчас на сайте фото с размером потому чтолее 50 КВ.Сайт подтормаживает, хочу ускорить его рилиту.

Нужно сжать порядка 30000 фото. Ручками это ооочень долго.

 

Ссылка на комменирий
Погделиться на других сайих


@Ezik гуглите jpegoptim

Ссылка на комменирий
Погделиться на других сайих


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

Сейчас на сайте фото с размером потому чтолее 50 КВ

Нужно посмотреть в Гугл ПейджСпид - возможно тормоза не из-за картинок. Или одновременно подгружается много фото - тогда гделать отложенную загрузку.

Ссылка на комменирий
Погделиться на других сайих

Есть на форуме ггде то модификатор, который все картинки на webp подменяет, естественно они получаются с меньшим весом.

Ссылка на комменирий
Погделиться на других сайих

<?xml version="1.0" encoding="utf-8"?>
<modification>
<name>OCMOD Quick Convert Images in WebP</name>
<code>webp-gd</code>
<version>1.0</version>
<author>no_name</author>
<link></link>
	<file path="catalog/model/tool/image.php">
		<operation>
			<search><![CDATA[$image_new = 'cache/']]></search>
			<add position="after"><![CDATA[$image_new_webp = 'cachewebp/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '.webp';]]></add>
		</operation>
		<operation>
			<search><![CDATA[$image_new = str_replace(]]></search>
			<add position="before" ><![CDATA[
			$gd = gd_info();
			if ($gd['WebP Support']) {
				if (!is_file(DIR_IMAGE . $image_new_webp) || (filectime(DIR_IMAGE . $image_new) > filectime(DIR_IMAGE . $image_new_webp))) {
										
					$path = '';

					$directories = explode('/', dirname($image_new_webp));

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

						if (!is_dir(DIR_IMAGE . $path)) {
							@mkdir(DIR_IMAGE . $path, 0777);
						}
					}
					
					$image_webp = new Image(DIR_IMAGE . $image_old);
					$image_webp->resize($width, $height);
					$image_webp->save_webp(DIR_IMAGE . $image_new_webp);
				}
			}
			]]></add>
		</operation>
	</file>
	<file path="system/library/image.php">
		<operation>
			<search><![CDATA[public function save($file, $quality = 90) {]]></search>
			<add position="before"><![CDATA[
			public function save_webp($file, $quality = 90) {
				if (is_resource($this->image)) {
					imagewebp($this->image, $file, $quality);
					imagedestroy($this->image);
				}
			}
			]]></add>
		</operation>
	</file>
	<file path="system/library/response.php">
		<operation>
			<search><![CDATA[private function compress($data, $level = 0)]]></search>
			<add position="before" ><![CDATA[ 	
			public function webpRebuild($output) {
				$gd = gd_info();
				if ($gd['WebP Support']) {
					$uri = '';

					if (isset($_SERVER['REQUEST_URI'])) {
						$uri = $_SERVER['REQUEST_URI'];
					}
					
					if (stripos($uri, 'admin') === false) {
						if (isset($_SERVER['HTTP_ACCEPT']) && isset($_SERVER['HTTP_USER_AGENT'])) {
							if( strpos( $_SERVER['HTTP_ACCEPT'], 'image/webp' ) !== false ) {	
								$re = '/(cache)(.*)(\.jpg|\.png|.jpeg)/U';
								$subst = '$1webp$2.webp';
								$this->output = preg_replace($re, $subst, $this->output);
							}
						}
					}
				}
			}
			]]></add>
		</operation>
		<operation>
			<search><![CDATA[$output = $this]]></search>
			<add position="before" ><![CDATA[ $this->webpRebuild($this->output); ]]></add>
		</operation>
	</file>
</modification>

На 2.3 и на 3-ке рилииет...

Ссылка на комменирий
Погделиться на других сайих

Quote

<author>no_name</author>

:mrgreen::mrgreen::mrgreen:

Это мой модуль и он бесплатный

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=38025

 

@Ezik Бесплатная версия https://kraken.io/web-interface сжимает тысяли, но если картинка не потому чтольше 1МБ.
Платная версия гделает все. https://kraken.io/pricing

  • +1 2
Ссылка на комменирий
Погделиться на других сайих

@Agatha65

if (!is_file(DIR_IMAGE . $image_new_webp) || (filectime(DIR_IMAGE . $image_new) > filectime(DIR_IMAGE . $image_new_webp))) {

возможно лучше использовать filemtime

Ссылка на комменирий
Погделиться на других сайих

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.