2011-04-26 38 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); 

請注意,您必須使用的,而不是圖像的圖像::精準, ::汽車。

希望這可以幫助別人。