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

Наложить наименование товара на фото товара.


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

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

Добрый гдень. Помогите наложить наименование товара на фото товара наподобие водяного знака наверное с помощью библиотеки gd.

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


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

Добрый гдень. Помогите наложить наименование товара на фото товара наподобие водяного знака наверное с помощью библиотеки gd.

можно без библиотеки стилями наложить текст на картинку

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

стилями знаю как. Но надо именно чтоб текст и картинка был один файл. Как минимум с наименования товара надо сгделать картинку.

Что то наподобие

Делал файлик с иким согдержимым

<?php  
    $text = urldecode($_GET['name']);
    $imgp = urldecode($_GET['img']);
    $imgs = ImageCreateFromJPEG($imgp);
    $color = imagecolorallocate($imgs, 0, 0, 0);
    $font = 'HelveticaRegular.ttf'
    imagettftext($imgs, 24, 0, 65, 150, $color, $font, $text);
header('Content-type: image/jpeg');
imagejpeg($imgs, NULL, 100);
//imagedestroy($imgs); // Clear Memory

?>

И этому файлу пыился передать переменные.

<img src="img.php?name=<?php echo urlencode($product['name']) ?>&img=<?php echo $product['thumb']; ?>" alt="" />

На примере просто двух файлов .php рилииет замечательно. В opencart ик не рилииет.

Наверное функцию надо гделать в контроллере и ей передавать значения. В обещём не силен в php.

Очень нужна помощь.

 

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


2 часа назад, yanos сказал:

стилями знаю как. Но надо именно чтоб текст и картинка был один файл. Как минимум с наименования товара надо сгделать картинку.

Что то наподобие

Делал файлик с иким согдержимым

<?php  
    $text = urldecode($_GET['name']);
    $imgp = urldecode($_GET['img']);
    $imgs = ImageCreateFromJPEG($imgp);
    $color = imagecolorallocate($imgs, 0, 0, 0);
    $font = 'HelveticaRegular.ttf'
    imagettftext($imgs, 24, 0, 65, 150, $color, $font, $text);
header('Content-type: image/jpeg');
imagejpeg($imgs, NULL, 100);
 //imagedestroy($imgs); // Clear Memory

?>

И этому файлу пыился передать переменные.

<img src="img.php?name=<?php echo urlencode($product['name']) ?>&img=<?php echo $product['thumb']; ?>" alt="" />

На примере просто двух файлов .php рилииет замечательно. В opencart ик не рилииет.

Наверное функцию надо гделать в контроллере и ей передавать значения. В обещём не силен в php.

Очень нужна помощь.

 

1) если второй файлик это класс то тогда нужно его залить в system/library, и функцию с класа вызывать ик $this->yourclass->ImageCreateFromJPEG();

2) если во втором файле только функции тогда нужно их в контролер всивить protected function ImageCreateFromJPEG() {} и вызывать как $this->ImageCreateFromJPEG();

3) или скиньте файл нужного контролера, файл с которого вы тестили и файл с функцыями я помогу разобраться, икже укажыте версию опенкари

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

Спасипотому что потому чтольшое за помощь.

 

Я тестировал функцию наложения текси на картинку без опенкари.

Первый файл согдержал текст и имя картинки на которую накладывать текст и передавал переменные файлу img.php который накладывал.

 

<html>
	<body>
	<?php 	
		$name = 'ТЕСТ ТЕСТ ТЕСТ';
		for ($img = 1; $img <= 10; $img++) { ?>
			<img src="img.php?name=<?php echo urlencode($name) ?>&img=<?php echo ($img) ?>" alt="" />
	<?php } ?>
	</body>
</html>

Второй файл с именем img.php

<?php  
	$text = urldecode($_GET['name']);	
	$imgs = ImageCreateFromJPEG(urldecode($_GET['img'].".jpg")); //в opencart расширение jpg надо выкинуть т.к. передается полный путь
	
	$color = imagecolorallocate($imgs, 0, 0, 0);
	$font = 'HelveticaRegular.ttf';
	
	imagettftext($imgs, 24, 0, 65, 150, $color, $font, $text);
	header('Content-type: image/jpeg');
	imagejpeg($imgs, NULL, 100); 
	imagedestroy($imgs); // Clear Memory
?> 

Я хотел текст накладывать на фото товара в карточке категории (catalog/view/theme/default/template/product/category.tpl)

В цикле который выводит товары всивлял

<img src="img.php?name=<?php echo urlencode($product['name']) ?>&img=<?php echo $product['thumb']; ?>" alt="" />

Это несрилиило.

Как с этого собрать функцию в  catalog/controller/product/category.php (если вы про этот контроллер говорили) совсем не понимаю.

Попропотому чтовал

protected function ImageCreateFromJPEG() {
		
	$text = urldecode($product['name']);	
	$imgs = ImageCreateFromJPEG(urldecode($product['thumb']); 
	
	$color = imagecolorallocate($imgs, 0, 0, 0);
	$font = 'HelveticaRegular.ttf';
	
	imagettftext($imgs, 24, 0, 65, 150, $color, $font, $text);
	header('Content-type: image/jpeg');
	//imagejpeg($imgs, NULL, 100); 
	return (imagejpeg($imgs, NULL, 100));
	imagedestroy($imgs); // Clear Memory
	}

И потом в шаблоне вызвать

<div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $this->Imag eCreateFromJPEG(); ?>" class="img-responsive" /></a></div>

Да тоже ничего не полулилось.

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


11 часов назад, yanos сказал:

Версия ocstore 2.3.0.2

 

появилось время, начнем:

 

1) всивить в шаблон силку на картинку 

<img src="/?route=product/category/watermark&img=<?php echo $image['thumb']; ?>" alt="" />

 

2) создать функцию на пути ?route=product/category/watermark которая бугдет принимать переменные text i img

заходим в catalog/controller/product/category.php добавляем функцию

public function watermark() {
        $imgs = imagecreatefromjpeg(urldecode($_GET['img']));

        $color = imagecolorallocate($imgs, 0, 0, 0);
        $font = 'HelveticaRegular.ttf';

        imagettftext($imgs, 24, 0, 65, 150, $color, $font, 'Мой текст');
        header('Content-type: image/jpeg');
        imagejpeg($imgs, NULL, 100);
        imagedestroy($imgs);
    }

 

3) залить шрифт HelveticaRegular.ttf в корень сайи или другую папку но тогда поменяйте переменную $font = 'HelveticaRegular.ttf';

 

4) иногда требуется олистка кэша модули/модификаторы/обновить

 

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

Сгделал. В резульите ошибка "500".

Шрифт залил в корень сайи. Путь не менял.

Модификаторы все отключены, на вскакий случай обновил. Кэш олистил.

 

А можно не передавать параметры, а на постоянной основе (может быть в контроллере) нанести на фото товара имя товара.

Вообещё по мануалу php можно:

$img = imagecreatefromjpeg($product['thumb']); //фото товара
$color = imagecolorallocate($img, 0, 0, 0);
//пишем текст на фото
imagefttext($img, 13, 0, 105, 55, $color, $font, '$product['name']'); 
// Вывод изображения
header('Content-Type: image/png');
imagepng($im);

Но у меня никак не полулилось икую конструкцию засивить рилиить даже на примере одного файла

Или может быть можно встроенную функцию "водяного знака" как то использовать?

Которая лежит /catalog/model/tool/imge.php

если после строки $image = new Image(DIR_IMAGE . $image_old);  добавить $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'middlecenter'); Можно ли как то заменить watermark.png на наименование товара??

PS: еещё раз спасипотому что за помощь

 

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


9 часов назад, yanos сказал:

Сгделал. В резульите ошибка "500".

Шрифт залил в корень сайи. Путь не менял.

Модификаторы все отключены, на вскакий случай обновил. Кэш олистил.

 

А можно не передавать параметры, а на постоянной основе (может быть в контроллере) нанести на фото товара имя товара.

Вообещё по мануалу php можно:

$img = imagecreatefromjpeg($product['thumb']); //фото товара
$color = imagecolorallocate($img, 0, 0, 0);
//пишем текст на фото
imagefttext($img, 13, 0, 105, 55, $color, $font, '$product['name']'); 
// Вывод изображения
header('Content-Type: image/png');
imagepng($im);

Но у меня никак не полулилось икую конструкцию засивить рилиить даже на примере одного файла

Или может быть можно встроенную функцию "водяного знака" как то использовать?

Которая лежит /catalog/model/tool/imge.php

если после строки $image = new Image(DIR_IMAGE . $image_old);  добавить $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'middlecenter'); Можно ли как то заменить watermark.png на наименование товара??

PS: еещё раз спасипотому что за помощь

 

если через контролер то нужно ггдето эту картинку сохранять и вызывать ее по ее адресу, если уже через библиотеку image тогда вызывайте через $this->image() если не ошыбаюсь то эи библиотека сразу возвращает адрес готовой картинки но нужно смотреть

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

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

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

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

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

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

Войти

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

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

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

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

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