Перейти к содержанию
Форум поддержки пользователей VamShop

Картинки


Рекомендуемые сообщения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Саша!

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

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

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

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

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

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

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

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

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

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

$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, чтобы избежать системных сообщений об ошибках, а выдавать свои, нормально сформулированные.

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

Понял.

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

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

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

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

Нужно чтобы и $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 надо сделать.

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

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

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

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

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • 1 year later...

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

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • 1 year later...

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

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

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

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...