【问题标题】:Resize image from URL in Magento从 Magento 中的 URL 调整图像大小
【发布时间】:2012-12-02 01:53:34
【问题描述】:

我正在为自定义类别视图中的每个图像检索一个 url:

像这样:

foreach ($collection as $cat){
    $cur_category = Mage::getModel('catalog/category')->load($cat->getId());
    $_img = $cur_category->getImageUrl();
    //stuff 
}

这是给我原始图像,我想使用 Magento 的内置调整大小功能调整大小。但我是新手,不知道如何让该代码像产品列表页面上的代码一样工作:

$this->helper('catalog/image')->init($_product, 'small_image')->resize(306);

如何修改/使用原始代码来调整图像大小?谢谢!

【问题讨论】:

    标签: php image magento resize


    【解决方案1】:

    您不应该使用 Mage::getBaseDir('media') 直接调用图像以输出到浏览器,否则您会邀请黑客篡改您的服务器。使用 Mage::getUrl('media') 获取媒体目录的 url,如下所示:

    foreach ($categories as $category) {
            $category = Mage::getModel('catalog/category')->load($category->getId());
            $category_name = $this->stripTags($category->getName(), null, true);
            $category_url = $category->getUrl();
            $category_img = $category->getImage();
            $media_dir = Mage::getBaseDir('media').DS.'catalog'.DS.'category'.DS;
            $cache_dir = $media_dir.'cache'.DS;
            $cache_url = Mage::getUrl('media').'catalog'.DS.'category'.DS.'cache'.DS;
    
            if (file_exists($cache_dir.$category_img)) {
                $category_img_url = $cache_url.$category_img;
            } elseif (file_exists($media_dir.$category_img)) {
                if (!is_dir($cache_dir)) {
                    mkdir($cache_dir);
                }
    
                $image = new Varien_Image($media_dir.$category_img);
                $image->constrainOnly(true);
                $image->keepAspectRatio(true);
                $image->keepFrame(true);
                $image->keepTransparency(true);
                $image->resize(140, 140);
                $image->save($cache_dir.$category_img);
    
                $category_img_url = $cache_url.$category_img;
            }
    }
    

    【讨论】:

      【解决方案2】:

      没有用于调整类别图像大小的内置功能。但是,您可以使用 Varien_Image 类。这里我写了一段你需要的代码:

      foreach ($collection as $_category){
          $_file_name = $_category->getImage();
          $_media_dir = Mage::getBaseDir('media') . DS . 'catalog' . DS . 'category' . DS;
          $cache_dir = $_media_dir . 'cache' . DS;
          if (file_exists($cache_dir . $_file_name)) {
              echo Mage::getBaseUrl('media') . DS . 'catalog' . DS . 'category' . DS . 'cache' . DS . $_file_name;
          } elseif (file_exists($_media_dir . $_file_name)) {
              if (!is_dir($cache_dir)) {
                  mkdir($cache_dir);
              }
      
              $_image = new Varien_Image($_media_dir . $_file_name);
              $_image->constrainOnly(true);
              $_image->keepAspectRatio(true);
              $_image->keepFrame(true);
              $_image->keepTransparency(true);
              $_image->resize(50, 50);
              $_image->save($cache_dir . $_file_name);
      
              echo Mage::getBaseUrl('media') . DS . 'catalog' . DS . 'category' . DS . 'cache' . DS . $_file_name;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-27
        • 2010-12-29
        • 2014-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多