sitecreator Опубліковано: 22 грудня 2012 Share Опубліковано: 22 грудня 2012 Есть потребность и желание изменить алгоритм генерирования изображений. версия магазина ocStore1.5.4.1 Для меня не вполне прозрачен алгоритм и логика создания миниатюр изображений. поясните, знатоки, пожалуйста. Итак, в настройках задан размер изображения (для товаров в списке, например) 500 на 220. исходное изображение имеет размер 500х99. В списке товаров вижу, что данное изображение не масштабируется и белые поля сверху и снизу не добавляются. но стоит только в настройках поставить 499х220 или 501х220 как сразу же генерируется картинка с белыми полями сверху и снизу. Почему сделано именно так? Меня такой алгоритм никак не устраивает. Где можно отменить добавление этих белых полей? image.php? И возможно ли вместо белых полей для файлов GIF и PNG добавлять прозрачные поля? спасибо. 1 Надіслати Поділитися на інших сайтах More sharing options... AlexFisher Опубліковано: 22 грудня 2012 Share Опубліковано: 22 грудня 2012 library/image Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 29 грудня 2012 Автор Share Опубліковано: 29 грудня 2012 В версии 1.5.4.1, вероятно, имеется ошибка в алгоритме. для файлов GIF изменения происходят так как написано в начале темы. а вот для файлов PNG (с прозрачным фоном) происходит добавление сверху и снизу пустых полей (прозрачных) в любом случае, даже если ширина исходника = заданной ширине для отображения, но высота исходной картинки ниже требуемой в настройках (в админке). убрал для своих нужд добавление пустых полей по краям картинки, например, сверху и снизу. 1 Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 29 грудня 2012 Автор Share Опубліковано: 29 грудня 2012 сделал правки в коде image.php пустые поля к картинкам не добавляются. просто изменяются пропорции. я использую для создания картинок одинаковой ширины, но разных по высоте public function resize($width = 0, $height = 0) { if (!$this->info['width'] || !$this->info['height']) { return; } $xpos = 0; $ypos = 0; $scale = min($width / $this->info['width'], $height / $this->info['height']); if ($scale == 1 && $this->info['mime'] != 'image/png') { return; } $new_width = (int)($this->info['width'] * $scale); $new_height = (int)($this->info['height'] * $scale); //$xpos = (int)(($width - $new_width) / 2); //$ypos = (int)(($height - $new_height) / 2); $xpos = 0; $ypos = 0; $image_old = $this->image; //$this->image = imagecreatetruecolor($width, $height); // преобразуем, сохранив пропорции $this->image = imagecreatetruecolor($new_width, $new_height); if (isset($this->info['mime']) && $this->info['mime'] == 'image/png') { imagealphablending($this->image, false); imagesavealpha($this->image, true); $background = imagecolorallocatealpha($this->image, 255, 255, 255, 127); imagecolortransparent($this->image, $background); } else { $background = imagecolorallocate($this->image, 255, 255, 255); } // не будем создавать новый прямоугольник //imagefilledrectangle($this->image, 0, 0, $width, $height, $background); imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->info['width'], $this->info['height']); imagedestroy($image_old); //$this->info['width'] = $width; // $this->info['height'] = $height; $this->info['width'] = $new_width; $this->info['height'] = $new_height; } 1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... KaReGlAzKa Опубліковано: 6 лютого 2013 Share Опубліковано: 6 лютого 2013 Не подскажете, как это реализовать, для пропорции с одинаковой высотой, а шириной разной, под ос_1.5.2.1 ? Вы сделали под ширину, а мне нужно под высоту. Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 6 лютого 2013 Автор Share Опубліковано: 6 лютого 2013 Не подскажете, как это реализовать, для пропорции с одинаковой высотой, а шириной разной, под ос_1.5.2.1 ? Вы сделали под ширину, а мне нужно под высоту. я делал под 1.5.4.1 версию. на предыдущих версиях несколько отличается код, но суть остается прежней. вам в админке нужно задать ограничение по высоте, т. е. задать ту высоту, которую желаете видеть, а ограничение по ширине сделать побольше, например, 500 или 800. соответственно у вас будет срабатывать только ограничение по высоте. поля не будут добавляться. для того чтобы они не добавлялись сделайте изменение кода, приведенное мною выше. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Шаблони, дизайн та оформлення магазину изменение алгоритма создания картинок (миниатюр и т. п.) Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
AlexFisher Опубліковано: 22 грудня 2012 Share Опубліковано: 22 грудня 2012 library/image Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 29 грудня 2012 Автор Share Опубліковано: 29 грудня 2012 В версии 1.5.4.1, вероятно, имеется ошибка в алгоритме. для файлов GIF изменения происходят так как написано в начале темы. а вот для файлов PNG (с прозрачным фоном) происходит добавление сверху и снизу пустых полей (прозрачных) в любом случае, даже если ширина исходника = заданной ширине для отображения, но высота исходной картинки ниже требуемой в настройках (в админке). убрал для своих нужд добавление пустых полей по краям картинки, например, сверху и снизу. 1 Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 29 грудня 2012 Автор Share Опубліковано: 29 грудня 2012 сделал правки в коде image.php пустые поля к картинкам не добавляются. просто изменяются пропорции. я использую для создания картинок одинаковой ширины, но разных по высоте public function resize($width = 0, $height = 0) { if (!$this->info['width'] || !$this->info['height']) { return; } $xpos = 0; $ypos = 0; $scale = min($width / $this->info['width'], $height / $this->info['height']); if ($scale == 1 && $this->info['mime'] != 'image/png') { return; } $new_width = (int)($this->info['width'] * $scale); $new_height = (int)($this->info['height'] * $scale); //$xpos = (int)(($width - $new_width) / 2); //$ypos = (int)(($height - $new_height) / 2); $xpos = 0; $ypos = 0; $image_old = $this->image; //$this->image = imagecreatetruecolor($width, $height); // преобразуем, сохранив пропорции $this->image = imagecreatetruecolor($new_width, $new_height); if (isset($this->info['mime']) && $this->info['mime'] == 'image/png') { imagealphablending($this->image, false); imagesavealpha($this->image, true); $background = imagecolorallocatealpha($this->image, 255, 255, 255, 127); imagecolortransparent($this->image, $background); } else { $background = imagecolorallocate($this->image, 255, 255, 255); } // не будем создавать новый прямоугольник //imagefilledrectangle($this->image, 0, 0, $width, $height, $background); imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->info['width'], $this->info['height']); imagedestroy($image_old); //$this->info['width'] = $width; // $this->info['height'] = $height; $this->info['width'] = $new_width; $this->info['height'] = $new_height; } 1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... KaReGlAzKa Опубліковано: 6 лютого 2013 Share Опубліковано: 6 лютого 2013 Не подскажете, как это реализовать, для пропорции с одинаковой высотой, а шириной разной, под ос_1.5.2.1 ? Вы сделали под ширину, а мне нужно под высоту. Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 6 лютого 2013 Автор Share Опубліковано: 6 лютого 2013 Не подскажете, как это реализовать, для пропорции с одинаковой высотой, а шириной разной, под ос_1.5.2.1 ? Вы сделали под ширину, а мне нужно под высоту. я делал под 1.5.4.1 версию. на предыдущих версиях несколько отличается код, но суть остается прежней. вам в админке нужно задать ограничение по высоте, т. е. задать ту высоту, которую желаете видеть, а ограничение по ширине сделать побольше, например, 500 или 800. соответственно у вас будет срабатывать только ограничение по высоте. поля не будут добавляться. для того чтобы они не добавлялись сделайте изменение кода, приведенное мною выше. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Шаблони, дизайн та оформлення магазину изменение алгоритма создания картинок (миниатюр и т. п.) Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
sitecreator Опубліковано: 29 грудня 2012 Автор Share Опубліковано: 29 грудня 2012 В версии 1.5.4.1, вероятно, имеется ошибка в алгоритме. для файлов GIF изменения происходят так как написано в начале темы. а вот для файлов PNG (с прозрачным фоном) происходит добавление сверху и снизу пустых полей (прозрачных) в любом случае, даже если ширина исходника = заданной ширине для отображения, но высота исходной картинки ниже требуемой в настройках (в админке). убрал для своих нужд добавление пустых полей по краям картинки, например, сверху и снизу. 1 Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 29 грудня 2012 Автор Share Опубліковано: 29 грудня 2012 сделал правки в коде image.php пустые поля к картинкам не добавляются. просто изменяются пропорции. я использую для создания картинок одинаковой ширины, но разных по высоте public function resize($width = 0, $height = 0) { if (!$this->info['width'] || !$this->info['height']) { return; } $xpos = 0; $ypos = 0; $scale = min($width / $this->info['width'], $height / $this->info['height']); if ($scale == 1 && $this->info['mime'] != 'image/png') { return; } $new_width = (int)($this->info['width'] * $scale); $new_height = (int)($this->info['height'] * $scale); //$xpos = (int)(($width - $new_width) / 2); //$ypos = (int)(($height - $new_height) / 2); $xpos = 0; $ypos = 0; $image_old = $this->image; //$this->image = imagecreatetruecolor($width, $height); // преобразуем, сохранив пропорции $this->image = imagecreatetruecolor($new_width, $new_height); if (isset($this->info['mime']) && $this->info['mime'] == 'image/png') { imagealphablending($this->image, false); imagesavealpha($this->image, true); $background = imagecolorallocatealpha($this->image, 255, 255, 255, 127); imagecolortransparent($this->image, $background); } else { $background = imagecolorallocate($this->image, 255, 255, 255); } // не будем создавать новый прямоугольник //imagefilledrectangle($this->image, 0, 0, $width, $height, $background); imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->info['width'], $this->info['height']); imagedestroy($image_old); //$this->info['width'] = $width; // $this->info['height'] = $height; $this->info['width'] = $new_width; $this->info['height'] = $new_height; } 1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... KaReGlAzKa Опубліковано: 6 лютого 2013 Share Опубліковано: 6 лютого 2013 Не подскажете, как это реализовать, для пропорции с одинаковой высотой, а шириной разной, под ос_1.5.2.1 ? Вы сделали под ширину, а мне нужно под высоту. Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 6 лютого 2013 Автор Share Опубліковано: 6 лютого 2013 Не подскажете, как это реализовать, для пропорции с одинаковой высотой, а шириной разной, под ос_1.5.2.1 ? Вы сделали под ширину, а мне нужно под высоту. я делал под 1.5.4.1 версию. на предыдущих версиях несколько отличается код, но суть остается прежней. вам в админке нужно задать ограничение по высоте, т. е. задать ту высоту, которую желаете видеть, а ограничение по ширине сделать побольше, например, 500 или 800. соответственно у вас будет срабатывать только ограничение по высоте. поля не будут добавляться. для того чтобы они не добавлялись сделайте изменение кода, приведенное мною выше. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Шаблони, дизайн та оформлення магазину изменение алгоритма создания картинок (миниатюр и т. п.)
sitecreator Опубліковано: 29 грудня 2012 Автор Share Опубліковано: 29 грудня 2012 сделал правки в коде image.php пустые поля к картинкам не добавляются. просто изменяются пропорции. я использую для создания картинок одинаковой ширины, но разных по высоте public function resize($width = 0, $height = 0) { if (!$this->info['width'] || !$this->info['height']) { return; } $xpos = 0; $ypos = 0; $scale = min($width / $this->info['width'], $height / $this->info['height']); if ($scale == 1 && $this->info['mime'] != 'image/png') { return; } $new_width = (int)($this->info['width'] * $scale); $new_height = (int)($this->info['height'] * $scale); //$xpos = (int)(($width - $new_width) / 2); //$ypos = (int)(($height - $new_height) / 2); $xpos = 0; $ypos = 0; $image_old = $this->image; //$this->image = imagecreatetruecolor($width, $height); // преобразуем, сохранив пропорции $this->image = imagecreatetruecolor($new_width, $new_height); if (isset($this->info['mime']) && $this->info['mime'] == 'image/png') { imagealphablending($this->image, false); imagesavealpha($this->image, true); $background = imagecolorallocatealpha($this->image, 255, 255, 255, 127); imagecolortransparent($this->image, $background); } else { $background = imagecolorallocate($this->image, 255, 255, 255); } // не будем создавать новый прямоугольник //imagefilledrectangle($this->image, 0, 0, $width, $height, $background); imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->info['width'], $this->info['height']); imagedestroy($image_old); //$this->info['width'] = $width; // $this->info['height'] = $height; $this->info['width'] = $new_width; $this->info['height'] = $new_height; } 1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... KaReGlAzKa Опубліковано: 6 лютого 2013 Share Опубліковано: 6 лютого 2013 Не подскажете, как это реализовать, для пропорции с одинаковой высотой, а шириной разной, под ос_1.5.2.1 ? Вы сделали под ширину, а мне нужно под высоту. Надіслати Поділитися на інших сайтах More sharing options... sitecreator Опубліковано: 6 лютого 2013 Автор Share Опубліковано: 6 лютого 2013 Не подскажете, как это реализовать, для пропорции с одинаковой высотой, а шириной разной, под ос_1.5.2.1 ? Вы сделали под ширину, а мне нужно под высоту. я делал под 1.5.4.1 версию. на предыдущих версиях несколько отличается код, но суть остается прежней. вам в админке нужно задать ограничение по высоте, т. е. задать ту высоту, которую желаете видеть, а ограничение по ширине сделать побольше, например, 500 или 800. соответственно у вас будет срабатывать только ограничение по высоте. поля не будут добавляться. для того чтобы они не добавлялись сделайте изменение кода, приведенное мною выше. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
KaReGlAzKa Опубліковано: 6 лютого 2013 Share Опубліковано: 6 лютого 2013 Не подскажете, как это реализовать, для пропорции с одинаковой высотой, а шириной разной, под ос_1.5.2.1 ? Вы сделали под ширину, а мне нужно под высоту. Надіслати Поділитися на інших сайтах More sharing options...
sitecreator Опубліковано: 6 лютого 2013 Автор Share Опубліковано: 6 лютого 2013 Не подскажете, как это реализовать, для пропорции с одинаковой высотой, а шириной разной, под ос_1.5.2.1 ? Вы сделали под ширину, а мне нужно под высоту. я делал под 1.5.4.1 версию. на предыдущих версиях несколько отличается код, но суть остается прежней. вам в админке нужно задать ограничение по высоте, т. е. задать ту высоту, которую желаете видеть, а ограничение по ширине сделать побольше, например, 500 или 800. соответственно у вас будет срабатывать только ограничение по высоте. поля не будут добавляться. для того чтобы они не добавлялись сделайте изменение кода, приведенное мною выше. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts