在OpenCart中删除图像大小调整比例 [英] Remove the image resize ratio in OpenCart

查看:146
本文介绍了在OpenCart中删除图像大小调整比例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我到处都在寻找如何在OpenCart中删除调整大小的图像,但是却一无所获.

I've look everywhere on how I could remove the image resizing in OpenCart but haven't find nothing about that.

我需要调整其大小,但不要保持比例.我希望图像就像我设置的图像一样.

I need that it resize but don't keep the ratio. I want the image to be just like I set it.

这是system/library/image.php中的调整大小代码

Here's the resize code in the system/library/image.php

public function resize($width = 0, $height = 0) {
        if (!$this->info['width'] || !$this->info['height']) {
            return;
        }

        $xpos = 0;
        $ypos = 0;

        $scale = min($width / $this->info['width'], $height / $this->info['height']);

        if ($scale == 1) {
            return;
        }

        $new_width = (int)($this->info['width'] * $scale);
        $new_height = (int)($this->info['height'] * $scale);            
        $xpos = (int)(($width - $new_width) / 2);
        $ypos = (int)(($height - $new_height) / 2);

        $image_old = $this->image;
        $this->image = imagecreatetruecolor($width, $height);

        if (isset($this->info['mime']) && $this->info['mime'] == 'image/png') {     
            imagealphablending($this->image, false);
            imagesavealpha($this->image, true);
            $background = imagecolorallocatealpha($this->image, 255, 255, 255, 127);
            imagecolortransparent($this->image, $background);
        } else {
            $background = imagecolorallocate($this->image, 255, 255, 255);
        }

        imagefilledrectangle($this->image, 0, 0, $width, $height, $background);

        imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->info['width'], $this->info['height']);
        imagedestroy($image_old);

        $this->info['width']  = $width;
        $this->info['height'] = $height;
    }

我可以删除该代码中的哪些内容,以免图像在调整大小时不保持其比例?

What in that code could I remove so the image don't keep it's ratio on resize ?

推荐答案

首先,我会保留默认的大小调整工具,因为在某些情况下它可能会派上用场.我所做的是添加了两个功能来调整图像大小.

First of all I would leave the default resizing tool as in some circumstances it might come in handy. What I did was add two more functions to resize images.

一个功能可以裁剪图像,使其适合管理员设置的尺寸.现在添加了空白区域.这是伟大的产品清单.我添加的第二个功能是调整图像大小的功能,因此最大尺寸将设置为在管理员中设置的最大尺寸.它将按比例缩放.

One function that crops an image so it fits the size set in the admin. Now empty white areas are added. This one is great for product lists. The second I added is a function that resizes an image so the biggest dimension will be set to the max size set in the admin. It will be scaled proportionally.

新文件发布在OpenCart论坛帖子中.

我将两个额外的功能命名为 cropsize onesize .您要做的就是在控制器中找到使用的调整大小功能并进行以下调整:

I named the two extra functions cropsize and onesize. All you have to do is find the used resize functions in the controller and adjust this:

'thumb' => $this->model_tool_image
                ->resize($image, 
                         $this->config->get('config_image_category_width'), 
                         $this->config->get('config_image_category_height')));

收件人:

'thumb' => $this->model_tool_image
                ->cropsize($image, 
                           $this->config->get('config_image_category_width'), 
                           $this->config->get('config_image_category_height')));

onesize函数仅需要一个参数,因此由您自己决定,但是您可以使用类似以下的方法:

The onesize function only needs one parameter so it's up to you but you could use something like this:

'popup' => $this->model_tool_image
                ->onesize($result['image'], 
                          $this->config->get('config_image_popup_width'))

我希望这会帮助您获得更好的图像.

I hope this will help you getting better images.

这篇关于在OpenCart中删除图像大小调整比例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆