私は何時間も研究してきましたが、Symfony2 内で効果的な画像操作を行う方法を理解できません。Liip Imagine バンドルは最適な方法のようですが、開発中に適切に機能させることができないようです。
私が欲しいもの:
- アップロード時に、できれば%ベースの画像サイズを作成します(画像が巨大な場合、キャッシュ中にその人が待機することを望まないため、画像のリクエストを待機することをお勧めします)
- 画像に透かしを作成する
- 画像、サイズ変更、DI などからメタを取得します。
私は以下を見てきました:
- アップロード後にLiipImagineBundleを使用して画像のサイズを変更しますか? しかし、試してみると、ExifMetadataReader を使用するには PHP EXIF 拡張機能が必要であるというエラーが表示されます
- http://symfony.com/doc/master/bundles/LiipImagineBundle/index.htmlしかし、Twig で参照しようとすると
app_dev.php
、画像の前に が追加され、キャッシュされたバージョンを保存しようとしません。
構成:
liip_imagine:
resolvers:
default:
web_path: ~
filter_sets:
cache: ~
my_thumb:
quality: 75
filters:
thumbnail: { size: [120, 90], mode: outbound }
試行された小枝:
img src="{{ asset(file.webPath) | imagine_filter('my_thumb') }}"
編集!!
そこで、次のコードを使用して、貼り付けた上記の投稿からアップロードしようとしました。
private function writeThumbnail($document, $filter) {
$path = $document->getWebPath(); // domain relative path to full sized image
$tpath = $document->getRootDir().$document->getThumbPath(); // absolute path of saved thumbnail
$container = $this->container; // the DI container
$dataManager = $container->get('liip_imagine.data.manager'); // the data manager service
$filterManager = $container->get('liip_imagine.filter.manager');// the filter manager service
$image = $dataManager->find($filter, $path); // find the image and determine its type
$response = $filterManager->get($this->getRequest(), $filter, $image, $path); // run the filter
$thumb = $response->getContent(); // get the image from the response
$f = fopen($tpath, 'w'); // create thumbnail file
fwrite($f, $thumb); // write the thumbnail
fclose($f); // close the file
}
そして今、この行$image = $dataManager->find($filter, $path)
は次のエラーをスローしています:
画像のアップロード/ファイル/pic_05052015_827_c6d4b.jpg の MIME タイプは、image/xxx got inode/x-empty である必要があります。
私はこの深いイメージのいくつかに少し戸惑っています.