Jump to content

Картинки


Recommended Posts

У меня при ручном добавлении товаров и картинок выдает следующее предупреждение:

Warning: Division by zero in admin/includes/classes/image_manipulator_GD2.php on line 56 при установке GD1 такое же. Добавляю только 1 картинку. Но все картинки появляются нормально на сайте. Только хочется убрать это предупреждение.

Link to post
Share on other sites
support

А что за картинку добавляешь, в каком формате, какого размера?

У меня такое бывает когда я картинку добавляю 1x1 размером.

Link to post
Share on other sites

Любую картинку. Например 800*536 пикселей формат jpg, есть меньше, есть больше. Вес от 30 до 110 кБ.

Link to post
Share on other sites

Эффект тот же. Предупреждение не появляется когда отключаешь генерацию картинок в pop-up окне (для картинок обеих форматов).

Link to post
Share on other sites
support

Да, странно, а какая версия PHP?!

Что находится на 56 строке в файле admin/includes/classes/image_manipulator_GD2.php

Link to post
Share on other sites

Версия 4.4.4 . Если правильно посчитал то:

$this->p = ($this->j / $this->n);

Link to post
Share on other sites

Саша, еще такой вопрос - высоту картинки обязательно устанавливать? Заметил еще закономерность: предупреждение появляется когда высоту генерируемых картинок не выставляешь. Просто у меня картинки разных форматов.

Link to post
Share on other sites
support

Да, обязательно выставлять нужно, ошибка как раз из-за того, что не указана высота.

Можно вообще готовить картинки в офлайне и просто загружать их руками в подиректории внутри /images/product_images, затем при добавлении товара в админке выбирать файл картинки из существующих файлов, тогда картинки вообще затрагиваться не будут, т.е. нарезаться не буду.

Link to post
Share on other sites

Саша!

Подожди, я ведь когда-то давно делал так, чтобы можно было задавать только один размер картинки, а второй вычислялся (если не задан).

Да и с этой ошибкой надо тоже что-то сделать. Не дело когда так работа заканчивается:

Warning: Division by zero in admin/includes/classes/image_manipulator_GD2.php on line 56

Надо проверять значения и выдавать соответствующие сообщения с разъяснением.

Link to post
Share on other sites
support

Привет Андрей!

Ты мне присылал ведь только поддержку подкатегорий.

Что б можно было задавать один размер не получал.

Link to post
Share on other sites

Саша, я посмотрел, эти изменения уже включены в твой магазин. В оригинале вот так:

$a = new image_manipulation(DIR_FS_CATALOG_ORIGINAL_IMAGES . $products_image_name,PRODUCT_IMAGE_INFO_WIDTH,PRODUCT_IMAGE_INFO_HEIGHT,DIR_FS_CATALOG_INFO_IMAGES . $products_image_name,IMAGE_QUALITY,'');
а у тебя:
	require_once(DIR_WS_FUNCTIONS . 'trumbnails_add_funcs.php');

xtc_mkdir_recursive(DIR_FS_CATALOG_INFO_IMAGES, dirname($products_image_name));

list($width, $height) = xtc_get_image_size(DIR_FS_CATALOG_ORIGINAL_IMAGES . $products_image_name, PRODUCT_IMAGE_INFO_WIDTH, PRODUCT_IMAGE_INFO_HEIGHT);

//$a = new image_manipulation(DIR_FS_CATALOG_ORIGINAL_IMAGES . $products_image_name,PRODUCT_IMAGE_INFO_WIDTH,PRODUCT_IMAGE_INFO_HEIGHT,DIR_FS_CATALOG_INFO_IMAGES . $products_image_name,IMAGE_QUALITY,'');
$a = new image_manipulation(DIR_FS_CATALOG_ORIGINAL_IMAGES . $products_image_name, $width, $height, DIR_FS_CATALOG_INFO_IMAGES . $products_image_name, IMAGE_QUALITY, '');[/code] trumbnails_add_funcs.php - это и есть мои добавленные функции (хотя там это конечно не упомянуто :)). Вычисление второго размера происходит в том случае, если задан только один размер, а второй пустой (надо добавить проверку на ноль) и задано вычисление размера картинки (CONFIG_CALCULATE_IMAGE_SIZE == 'true'). Во все три файла после
[code]list($width, $height) = xtc_get_image_size(DIR_FS_CATALOG_ORIGINAL_IMAGES . $products_image_name, PRODUCT_IMAGE_INFO_WIDTH, PRODUCT_IMAGE_INFO_HEIGHT);

хорошо-бы поставить проверку на ноль для $width и $height, чтобы избежать системных сообщений об ошибках, а выдавать свои, нормально сформулированные.

Link to post
Share on other sites
support

Понял.

А как правильно условие сделать?

Если высота = '0' то высота = '' или что лучше указать, если указана нулевая высота?

А может просто на странице Админка - Настройки - Картинки проверять, что б не вводили 0 ?!

Link to post
Share on other sites

Нужно чтобы и $width и $height были больше нуля. Например:

Файл product_info_images.php.

<?php
/* --------------------------------------------------------------
  $Id: product_info_images.php 899 2007-02-08 12:09:57 VaM $ 

  VaM Shop - open source ecommerce solution
  http://vamshop.ru
  http://vamshop.com

  Copyright (c) 2007 VaM Shop
  --------------------------------------------------------------
  based on:
  (c) 2004 xt:Commerce (product_info_images.php,v 1.17 2003/08/24); xt-commerce.com

  Released under the GNU General Public License
  --------------------------------------------------------------*/

if(PRODUCT_IMAGE_INFO_ACTIVE == 'true') {

require_once(DIR_WS_FUNCTIONS . 'trumbnails_add_funcs.php');

xtc_mkdir_recursive(DIR_FS_CATALOG_INFO_IMAGES, dirname($products_image_name));

list($width, $height) = xtc_get_image_size(DIR_FS_CATALOG_ORIGINAL_IMAGES . $products_image_name, PRODUCT_IMAGE_INFO_WIDTH, PRODUCT_IMAGE_INFO_HEIGHT);
      if($width > 0 && $height > 0) {

//$a = new image_manipulation(DIR_FS_CATALOG_ORIGINAL_IMAGES . $products_image_name,PRODUCT_IMAGE_INFO_WIDTH,PRODUCT_IMAGE_INFO_HEIGHT,DIR_FS_CATALOG_INFO_IMAGES . $products_image_name,IMAGE_QUALITY,'');
$a = new image_manipulation(DIR_FS_CATALOG_ORIGINAL_IMAGES . $products_image_name, $width, $height, DIR_FS_CATALOG_INFO_IMAGES . $products_image_name, IMAGE_QUALITY, '');
$array=clear_string(PRODUCT_IMAGE_INFO_BEVEL);
if (PRODUCT_IMAGE_INFO_BEVEL != ''){
$a->bevel($array[0],$array[1],$array[2]);}

$array=clear_string(PRODUCT_IMAGE_INFO_GREYSCALE);
if (PRODUCT_IMAGE_INFO_GREYSCALE != ''){
$a->greyscale($array[0],$array[1],$array[2]);}

$array=clear_string(PRODUCT_IMAGE_INFO_ELLIPSE);
if (PRODUCT_IMAGE_INFO_ELLIPSE != ''){
$a->ellipse($array[0]);}

$array=clear_string(PRODUCT_IMAGE_INFO_ROUND_EDGES);
if (PRODUCT_IMAGE_INFO_ROUND_EDGES != ''){
$a->round_edges($array[0],$array[1],$array[2]);}

$string=str_replace("'",'',PRODUCT_IMAGE_INFO_MERGE);
$string=str_replace(')','',$string);
$string=str_replace('(',DIR_FS_CATALOG_IMAGES,$string);
$array=explode(',',$string);
//$array=clear_string();
if (PRODUCT_IMAGE_INFO_MERGE != ''){
$a->merge($array[0],$array[1],$array[2],$array[3],$array[4]);}

$array=clear_string(PRODUCT_IMAGE_INFO_FRAME);
if (PRODUCT_IMAGE_INFO_FRAME != ''){
$a->frame($array[0],$array[1],$array[2],$array[3]);}

$array=clear_string(PRODUCT_IMAGE_INFO_DROP_SHADOW);
if (PRODUCT_IMAGE_INFO_DROP_SHADOW != ''){
$a->drop_shadow($array[0],$array[1],$array[2]);}

$array=clear_string(PRODUCT_IMAGE_INFO_MOTION_BLUR);
if (PRODUCT_IMAGE_INFO_MOTION_BLUR != ''){
$a->motion_blur($array[0],$array[1]);}
  $a->create();
    } else {
        $messageStack->add_session(ERROR_PRODUCT_IMAGE_INFO, 'error');
    }
}
?>[/code]

Ну и соответственно константу ERROR_PRODUCT_IMAGE_INFO сформировать. Может быть ещё redirect надо сделать.

Неправильно ограничивать ввод нуля.

Link to post
Share on other sites
support

Спасибо, но что-то странновато работает вывод ошибки.

При добавлении товара с нулевой величиной ошибка (т.е. нет ошибки division... но и нет ERROR_PRODUCT_IMAGE_INFO) не выводится, потом если отредактировать уже созданный товар, только тогда выводит ERROR_PRODUCT_IMAGE_INFO

Link to post
Share on other sites

Это не готовый код, а пример как делать.

Попробуй вместо add_session использовать метод add (или оба вместе).

Редирект точно не надо добавлять. Это было неправильное предположение.

Link to post
Share on other sites
support

Да, я уже понял, спасибо за подсказку.

Что-нибудь придумаю.

Link to post
Share on other sites
  • 1 year later...

Скажите, а при импортировании из Exel нужкно чтобы картинки уже были загруженны? А то сделал импорт, потом загрузил картинки, но они не отображаются. И загружать надо в images/product_images/original_images ?

Link to post
Share on other sites

Да, нужно что б были загружены картинки в эту папку и что б была включена опция Нарезка картинок при Excel импорте/экспорте в Админке - Настройки - Основные - Картинки, тогда при импорте прайса картинки сразу на три рамера будут нарезаться, но это всё будет довольно медленно, по идее.

Link to post
Share on other sites
  • 1 year later...

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

Link to post
Share on other sites

По умолчанию для открытия картинки используется javascript Fancybox, т.е. никаких новых вкладок.

Возможно, что дело в Вашем шаблоне.

Открывается по умолчанию так же как на http://vamshop.ru/vamshop.html

Link to post
Share on other sites

Возьмите файл /templates/vamshop/module/product_info/product_info_v1.html переписать в свой шаблон.

Link to post
Share on other sites

спасибо, даже не знаю, что еще потом не так как нужно будет работать и не нравится мне фиксированный шаблон ... перетягиваю свой дизайн - шаблон на обновленный резиновый шаблон vamshop, как могу ... не знаю что из этого выйдет ...  шапку и меню перетянул ...

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...