Symfony 2.3 + liip + gaufrette = создать большой палец удаленного изображения (по URL)

Я получаю старый проект Symfony 2.3.
Я никогда не использовал Symfony раньше (я в Angularjs), так что это немного сложно.

Что я хочу сделать: мне нужно настроить проект, чтобы я мог отображать большой палец локального изображения или удаленного изображения (я получу полный URL-адрес уже загруженных изображений), большой палец должен быть создан в локальном кэше.

Liip image bundle уже используется в проекте с фильтрами.
Я установил KnpGaufretteBundle с композитором.

1.in services.yml

 services:
acme.liip_imagine.binary.loader.stream.profile_photos:
class: "%liip_imagine.binary.loader.stream.class%"arguments:
- 'gaufrette://profile_photos/'
tags:
- { name: 'liip_imagine.binary.loader', loader: 'stream.profile_photos' }

2.in config.yml

liip_imagine:
#cache_clearer: false
#cache_mkdir_mode: 0777
loaders:
stream.profile_photos:
stream:
wrapper: gaufrette://profile_photos
filter_sets:
url_thumb:
data_loader: stream.profile_photos
filters:
thumbnail: { size: [100, 100], mode: outbound }

3. в view.twig

// If i display directly the img it works
{% set img = row.path %}
<a href="{{ img }}" class="grouped_elements" rel="group" title="{{ row.copyright }}">
<img src="{{ img  }}" width="100px" alt="{{ img }}" border="0" />
</a>

// but i get an error with this :
{% set imgspe = row.path|basename %}
{% set img = ['uploads/'~module.uploaddir~'/', imgspe]|join('') %}
<a href="{{ asset(img) }}" class="grouped_elements" rel="group" title="{{ row.copyright }}">
<img src="{{ asset(img) | imagine_filter('url_thumb') }}" alt="{{ imgspe }}" border="0" />
</a>

Ошибка :

NetworkError: 404 Not Found - http://publish.test/app_dev.php/media/cache/url_thumb/http://www.jump-voyage.com/wp-content/uploads/2016/06/Google-Images-4.jpg

'Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "Source image not found." at /var/www/test/publishv2/vendor/liip/imagine-bundle/Liip/ImagineBundle/Binary/Loader/StreamLoader.php line 55'

Таким образом, URL не является хорошим, потому что это локальный путь + конкатенация пути URL

Что я могу сделать ?

0

Решение

Я делаю это вручную без liip / gaufrette.

Я делаю это вручную:

<?php
/*
* étapes
*
* si image existe
*      on la retourne
*
* sinon
*      créer le chemin complet
*      créer la vignette
*      retourner la vignette
*
* chemin ou sont stocké les images : media/cache_url_thumb/thumb_{{w}}_
* * / // возвращение изображения function sendimg ($ path, $ filename) { $ contents = file_get_contents ($ path. $ filename); заголовок ('Content-type: image / jpeg'); echo $ content; } / ** * CREE UN миниатюра Dans Le Dossier $ Updir * @param $ updir: досье в миниатюре * @param $ img: image orignale * @param $ finalimg: финал изображения * @param $ width * @param $ height * / Функция makeThumbnails ($ updir, $ img, $ finalimg, $ width = 134, $ height = 189) { $ thumbnail_width = $ width; $ thumbnail_height = $ height; $ arr_image_details = getimagesize ("$ updir". "$ img"); // cl ($ arr_image_details); $ original_width = $ arr_image_details [0]; $ original_height = $ arr_image_details [1]; если ($ original_width > $ original_height) { $ new_width = $ thumbnail_width; $ new_height = intval ($ original_height * $ new_width / $ original_width); } еще { $ new_height = $ thumbnail_height; $ new_width = intval ($ original_width * $ new_height / $ original_height); } $ dest_x = intval (($ thumbnail_width - $ new_width) / 2); $ dest_y = intval (($ thumbnail_height - $ new_height) / 2); if ($ arr_image_details [2] == IMAGETYPE_GIF) { $ imgt = "ImageGIF"; $ imgcreatefrom = "ImageCreateFromGIF"; } if ($ arr_image_details [2] == IMAGETYPE_JPEG) { $ imgt = "ImageJPEG"; $ imgcreatefrom = "ImageCreateFromJPEG"; } if ($ arr_image_details [2] == IMAGETYPE_PNG) { $ imgt = "ImagePNG"; $ imgcreatefrom = "ImageCreateFromPNG"; } if ($ imgt) { $ old_image = $ imgcreatefrom ("$ updir". "$ img"); $ new_image = imagecreatetruecolor ($ thumbnail_width, $ thumbnail_height); imagecopyresized ($ new_image, $ old_image, $ dest_x, $ dest_y, 0, 0, $ new_width, $ new_height, $ original_width, $ original_height); $ imgt ($ new_image, "$ updir". $ finalimg); } } // криптовалюта для женщин и женщин function toMd5 ($ string) { вернуть md5 ($ string); } // créer un dossier si il n'éxiste pas function createDir ($ path) { if (! is_dir ($ path)) { if (! mkdir ("$ path", 0777, true)) { die ('Echec lors de la création du repertoire $ path pour les thumb images distantes ...'); } } } $ originalSrc = $ _GET ["src"]; $ filename = toMd5 ($ originalSrc); $ path = 'media / cache_url_thumb /'. "thumb _". $ _ GET ["width"]. "_". $ _ GET ["height"]. "/"; $ path. = substr ($ filename, 0,3). "/"; // проверка изображения существует если (file_exists ($ путь. $ имя_файла)) { sendimg ($ путь, $ файла); } Еще { // l'image n'existe pas CreateDir ($ путь); $ tmpfilename = 'original _'. $ filename; копия ($ originalSrc, $ path. $ tmpfilename); makeThumbnails ($ path, $ tmpfilename, $ filename, $ _ GET ["width"], $ _ GET ["height"]); разъединить ($ путь $ tmpfilename.); sendimg ($ путь, $ файла); } ?> [/ NOEDIT]

и веточка:

<a href="{{ img }}" class="grouped_elements" rel="group" title="{{ row.copyright }}">
<img src="/geturlimage.php?src={{ img |url_encode }}&width=100&height=100" alt="{{ img }}" border="0" />
</a>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]