【问题标题】:CakePHP Image Upload and Resizing/CroppingCakePHP 图像上传和调整大小/裁剪
【发布时间】:2014-02-10 23:36:49
【问题描述】:

我正在为最新版本的 CakePHP 寻找一个愚蠢而灵活的图像上传和调整大小插件

  1. 根据 MimeType 上传图片
  2. 检查宽度和高度的最小值/最大值
  3. 能够调整图像的大小和裁剪中心,以便在裁剪时提供最大的图像可见度
  4. 重命名文件名
  5. 根据模型和关系指定自定义文件夹。

【问题讨论】:

  • 搜索了很多次

标签: cakephp image-uploading cakephp-2.4


【解决方案1】:

https://github.com/burzum/FileStorage

阅读 readme.md,它可以做任何你想做的事, 5. 将要求你添加自己的事件侦听器以允许自定义文件夹超出约定(不推荐任何方式)。开发分支也有一些更多更好的结构化文档。 This page is about the image processing part of it。它还带有单元测试,并通过2.0 up to 2.5(目前即将发布的版本)进行测试。

UploadValidationBehavior 将负责您想要的验证。在验证图像大小的情况下,ImageStorage 模型实现了一个方法。

【讨论】:

  • 哇。想知道我怎么没有遇到这个插件。我可以将一个模型中的图像存储到该模型名称的单个文件夹中吗?
  • 阅读文档。该插件有 one 表来跟踪所有文件。所有其他模型都使用关联(hasMany、hasOne 或 HABTM)来访问此模型。该表跟踪所有文件和元数据,例如 mime 类型、大小……例如用户 hasOne Avatar。 Avatar 扩展了 ImageStorage。您必须使用“用户”填充 Avatar 的模型字段并配置您想要对其执行的任何图像操作。见github.com/burzum/FileStorage/blob/develop/Docs/Documentation/…
  • 大声笑,我什至会为了好玩而挂帐篷,据我所知,这在印度很受欢迎。 en.wikipedia.org/wiki/Tent_pegging
  • 呵呵是的 :D 你的马是什么颜色的?我认为我们不应该在这里谈论马:P
  • 没有。 ;) 在用于测试的插件的夹具文件夹中有一张他的照片。在谈到测试时,现在在开发分支中修复它们,发现了一个问题。
【解决方案2】:

您好,您可以使用:Intervention Image

安装:

 php composer.phar require intervention/image

代码:

use Intervention\Image\ImageManager;
$img = Image::make('public/foo.jpg');
$img->crop(100, 100, 25, 25);

【讨论】:

  • 首先这应该是一个模型任务,而不是组件,其次这个插件不负责跟踪文件引用,也不跟踪它生成的版本。这是一个简单的图像缩放器,没有单元测试,代码不遵循约定,甚至文件没有正确命名。
  • 先生,这可以调整大小和裁剪吗?
  • 是的@HarshaMV 你可以为我不知道的作物调整大小。我承认,就我而言,遵守公约并不好,但任务充满了这个 sn-p
【解决方案3】:
function upload_image($data, $id) {
        $data['photo'] = $data['image_path'];
        unset($data['image_path']);
        $upData = array();
        if ($this->fnIsNotNull($data['photo']) && $data['photo']['error'] == 0) {
            $allowedExts = array("gif", "jpeg", "jpg", "png");
            $optionsUpload = array('org' => true, "thumbs" => array("width" => 270, "height" => 180));
            $fileUploaded = fileUpload($data['photo'], $data['id'] . "_category", CATEGORY_IMG_DIR, $allowedExts, $optionsUpload);
            if (isset($fileUploaded['success']) && fnIsNotNull($fileUploaded['success'])) {
                $upData = $fileUploaded['success'][0]['filename'];
            }
        }
        if (isset($id) && count($upData)) {
            $oldData = $this->get($id);
            $remvoeImg = $oldData->photo;
            $oldData->photo = $upData;
            $res = $this->save($oldData);
            if ($res && !empty($upData) && !empty($remvoeImg)) {
                @unlink(CATEGORY_IMG_DIR . $remvoeImg);
                @unlink(CATEGORY_IMG_DIR . "thumbs/" . $remvoeImg);
            }
            return $res;
        }
        return false;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 2011-06-25
    • 1970-01-01
    相关资源
    最近更新 更多