2011-04-26 106 views
0

我想上传一些图片到服务器,但首先我想让他们蜷缩,并调整到一定的尺寸。kohana 3.0在上传前调整图像大小?

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

$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中裁剪或调整图像的尺寸?我找不到任何相关的文件。

谢谢!

回答

2

你有没有试着用图像包:

// 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

+0

我应该在上传之前还是之后做这个?谢谢! – dana 2011-04-26 10:13:40

+0

我这样做:$ header_image = Upload :: save($ _ FILES ['sale_picture_header'],NULL,APPPATH。'media'。'/'); $ header_image = Image :: factory($ header_image) - > resize(80,60) - > save(); 尽管它引发了我没有错误,它会在最后一行之后停止解析。 – dana 2011-04-26 10:53:13

+0

你的最后一行必须以' - > 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());'。 – 2011-06-21 20:27:30

0

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

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

0

我发现了一些很有趣的。现在的问题是,如何执行这个动作,“调整然后再剪裁”的形象,以适应完全确定框,这是解决方案:

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

请注意,您必须使用的,而不是图像的图像::精准, ::汽车。

希望这可以帮助别人。