kohana 3.0 在上传之前调整图像大小?

Posted

技术标签:

【中文标题】kohana 3.0 在上传之前调整图像大小?【英文标题】:kohana 3.0 resize image before uploading? 【发布时间】:2011-04-26 10:04:19 【问题描述】:

我想将一些图像上传到服务器,但首先我希望它们被裁剪,并调整到某些特定尺寸。

现在我正在做简单的上传和保存:

$header_image = Upload::save($_FILES['sale_picture_header'],NULL,APPPATH.'media'.'/');
$image_header = Model::factory('image');                                
$image_header->name = basename($header_image);
$image_header->save();

(不包括验证)。

如何在 Kohana 3.0 中将图像裁剪或调整为所需的尺寸?我找不到任何相关文档。

谢谢!

【问题讨论】:

【参考方案1】:

您是否尝试过使用图像包:

// Resize to 200 pixels on the shortest side
$image->resize(200, 200);

// Resize to 200x200 pixels, keeping aspect ratio
$image->resize(200, 200, Image::INVERSE);

// Resize to 500 pixel width, keeping aspect ratio
$image->resize(500, NULL);

// Resize to 500 pixel height, keeping aspect ratio
$image->resize(NULL, 500);

// Resize to 200x500 pixels, ignoring aspect ratio
$image->resize(200, 500, Image::NONE);

来源: http://kohanaframework.org/3.0/guide/api/Image#resize

【讨论】:

我喜欢这样:$header_image = Upload::save($_FILES['sale_picture_header'], NULL, APPPATH . 'media' . '/'); $header_image = Image::factory($header_image)->resize(80, 60)->save();尽管它没有抛出任何错误,但它在最后一行之后停止解析。 您的最后一行必须以->render(NULL, 80) 结尾(例如)而不是->save()。此外,render 方法返回图像二进制数据,因此您必须将其放入文件中,而不是将其分配给变量。可以使用php的file_put_contents函数,即file_put_contents('your/desired/file/path', Image::factory($upload_saved_image_path)->resize(80, 60)->render());【参考方案2】:

您可以使用ImageMagick 库或GD 库进行图像处理。

另请注意,这些都是严格的服务器端,不会发生在上传之前。为此,您需要一些能够进行图像处理的客户端插件,例如 Flash 或 Java。

【讨论】:

【参考方案3】:

我发现了一些非常有趣的东西。问题是,如何执行此操作,“调整大小然后裁剪”图像以完全适合确定的框,这就是解决方案:

Image::factory($file)
    ->resize(128, 149, Image::PRECISE)
    ->crop(128, 149)
    ->save(DOCROOT.$filename);

请注意,您必须使用 Image::PRECISE,而不是 IMAGE::AUTO。

希望这对某人有所帮助。

【讨论】:

以上是关于kohana 3.0 在上传之前调整图像大小?的主要内容,如果未能解决你的问题,请参考以下文章

可以在上传之前在 html 表单上调整图像(客户端)的大小吗?

如何在将图像上传到 Firebase 之前调整其大小?

如何在上传到服务器之前在 iOS 上压缩/调整图像大小?

如何在上传前调整图像大小并进行预览

在上传到服务器之前使用 JavaScript 在客户端调整图像大小

在上传到Google Cloud存储之前调整图像大小并进行压缩