File upload LiipImagineBundle图片在过滤后不显示

File upload LiipImagineBundle图片在过滤后不显示,file-upload,doctrine-orm,symfony,liipimaginebundle,vichuploaderbundle,File Upload,Doctrine Orm,Symfony,Liipimaginebundle,Vichuploaderbundle,我正在使用VichUploadBundle将图像上载到我的数据库中,并希望使用LiipImage在网站上显示图像的缩略图 这是我的config.yml,其中包含已设置的文件 //..... vich_uploader: db_driver: orm twig: true mappings: product_image: uri_prefix: /images/products

我正在使用VichUploadBundle将图像上载到我的数据库中,并希望使用LiipImage在网站上显示图像的缩略图

这是我的config.yml,其中包含已设置的文件

 //.....
vich_uploader:
    db_driver: orm
    twig: true
    mappings:
            product_image:
                uri_prefix:         /images/products
                upload_destination: '%kernel.root_dir%/../web/images/products'

                inject_on_load:     false
                delete_on_update:   true
                delete_on_remove:   true

liip_imagine:

    # configure resolvers
    resolvers:

        # setup the default resolver
        default:

            # use the default web path
            web_path: ~

    # your filter sets are defined here
    filter_sets:

        # use the default cache configuration
        cache: ~
        # the name of the "filter set"
        my_thumb:

            # adjust the image quality to 75%
            quality: 75

            # list of transformations to apply (the "filters")
            filters:

                # create a thumbnail: set size to 120x90 and use the "outbound" mode
                # to crop the image when the size ratio of the input differs
                thumbnail: { size: [120, 90], mode: outbound }

                # create a 2px black border: center the thumbnail on a black background
                # 4px larger to create a 2px border around the final image
                background: { size: [124, 98], position: center, color: '#000000' }
liip的大部分代码都是直接从文档中复制出来进行测试的

这是我的路线

最后,我有我想要上传的图像实体。 这也是从维希官方文档中复制的代码

<?php
namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;

/**
 * @ORM\Entity
 * @Vich\Uploadable
 */
class Image
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    // ..... other fields

    /**
     * NOTE: This is not a mapped field of entity metadata, just a simple property.
     *
     * @Vich\UploadableField(mapping="product_image", fileNameProperty="imageName")
     *
     * @var File
     */
    protected $imageFile;

    /**
     * @ORM\Column(type="string", length=255)
     *
     * @var string
     */
    protected $imageName;

    /**
     * @ORM\Column(type="string", length=100)
     *
     * @var string
     */
    protected $imageTitle = null;

    /**
     * @ORM\Column(type="string", length=100)
     *
     * @var string
     */
    protected $imageAuthor = null;

    /**
     * If manually uploading a file (i.e. not using Symfony Form) ensure an instance
     * of 'UploadedFile' is injected into this setter to trigger the  update. If this
     * bundle's configuration parameter 'inject_on_load' is set to 'true' this setter
     * must be able to accept an instance of 'File' as the bundle will inject one here
     * during Doctrine hydration.
     *
     * @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $image
     *
     * @return Product
     */
    public function setImageFile(File $image = null)
    {
        $this->imageFile = $image;

        if ($image) {
            // It is required that at least one field changes if you are using doctrine
            // otherwise the event listeners won't be called and the file is lost
            $this->updatedAt = new \DateTimeImmutable();
        }

        return $this;
    }

    /**
     * @return File|null
     */
    public function getImageFile()
    {
        return $this->imageFile;
    }

    /**
     * @param string $imageName
     *
     * @return Product
     */
    public function setImageName($imageName)
    {
        $this->imageName = $imageName;

        return $this;
    }

    /**
     * @return string|null
     */
    public function getImageName()
    {
        return $this->imageName;
    }

    /**
     * @ORM\Column(type="datetime")
     *
     * @var \DateTime
     */
    protected $updatedAt;

    /**
     * @return null
     */
    public function getImageTitle()
    {
        return $this->imageTitle;
    }

    /**
     * @param null $imageTitle
     */
    public function setImageTitle($imageTitle)
    {
        $this->imageTitle = $imageTitle;
    }

    /**
     * @return null
     */
    public function getImageAuthor()
    {
        return $this->imageAuthor;
    }

    /**
     * @param null $imageAuthor
     */
    public function setImageAuthor($imageAuthor)
    {
        $this->imageAuthor = $imageAuthor;
    }
}
我后来将其放入视图中并(希望)按如下方式打印:

{% for l in list %}
        <tr>
            <td>
                <img src="{{ asset('/images/products/'~l.imageName) | imagine_filter('my_thumb') }}" alt="{{ l.imageName }}">

            </td>
            <td>{{ l.imageTitle }}</td>
            <td>{{ l.imageAuthor }}</td>
        </tr>
    {% endfor %}
{list%%中的l的%
{{l.imageTitle}
{{l.imageAuthor}
{%endfor%}
不幸的是,输出如下所示:


现在路好走了。图像在没有
imagine\u filter()
的情况下运行良好。使用维希资产时也会产生同样的效果

选中后,图像链接的路径为:

图像的路径是

网络/图像/产品


有人知道可能是什么问题吗

或者提供另一个用于创建图像缩略图的捆绑包


所有的帮助都将是惊人的

修复:在php.ini中启用GD和文件名并重新启动apache,然后清除缓存修复所有问题

检查日志,尝试使用web服务器所有者(或777权限)创建foder
/web/media
$em = $this->getDoctrine()->getManager();
$list = $em->getRepository(Image::class)->findAll();
{% for l in list %}
        <tr>
            <td>
                <img src="{{ asset('/images/products/'~l.imageName) | imagine_filter('my_thumb') }}" alt="{{ l.imageName }}">

            </td>
            <td>{{ l.imageTitle }}</td>
            <td>{{ l.imageAuthor }}</td>
        </tr>
    {% endfor %}