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 表单上调整图像(客户端)的大小吗?