我有一個CI圖像上傳表單,我想確保我上傳的圖像適合給定的矩形。如果它們太大 - 我想縮小它們。如果它們適合那個矩形 - 我不需要調整大小。如何在最大寬度和最大高度範圍內調整圖像的大小?
我知道CI支持最大高度和最大寬度(作爲限制上傳的圖像可以有多大),它支持調整大小,但我找不到如何調整圖像的大小,以設置max-高度和最大寬度(同時保持比例)。
我有一個CI圖像上傳表單,我想確保我上傳的圖像適合給定的矩形。如果它們太大 - 我想縮小它們。如果它們適合那個矩形 - 我不需要調整大小。如何在最大寬度和最大高度範圍內調整圖像的大小?
我知道CI支持最大高度和最大寬度(作爲限制上傳的圖像可以有多大),它支持調整大小,但我找不到如何調整圖像的大小,以設置max-高度和最大寬度(同時保持比例)。
嗯,這是很容易,從CI(預期 - :
使用$this->image_lib->resize()
,用戶設定所需的寬度&如果您還將maintain_ratio設置爲true,則新圖像將調整爲您的設置寬度的最接近可能的值,同時保持原始高寬比
所以這是我使用的代碼,上傳圖片後:
$file_data = $this->upload->data();
$max_height = 115;
$max_width = 225;
if ($file_data['image_width']>$max_width || $file_data['image_height']>$max_height)
{
$configResize = array(
'source_image' => $file_data['full_path'],
'width' => $max_width,
'height' => $max_height,
'maintain_ratio' => TRUE
);
$this->load->library('image_lib',$configResize);
$this->image_lib->resize())
}
我不知道codeigniter在調整大小之前是否不會自動比較圖像的寬度/高度和最大寬度/高度... – dsdsdsdsd 2016-03-25 19:40:29
使用Image Manipulation Class形式CI
但是,如何設置該類的最大高度和最大寬度?據我所知,它只支持* set * width和* set * height。 – einav 2013-04-29 12:19:49
我相信你可以_force_圖像被調整到某些尺寸,但默認的行爲是讓圖像**符合**在指定的尺寸(s)。正是你想要做的 - 哦,等等,你已經發現了你自己。幹得好,對於遲到的回覆感到抱歉。 – 2013-05-07 09:20:28
也許有更好的方式來處理,這是通過CSS(與CI的圖像處理庫進行調整一起):
.media img{
max-width:100px;
max-height:100px;
}
只是爲了確保我能理解你 - 你的意思是我應該在上傳圖片後處理,當在我的網站上顯示上傳的圖片時? – einav 2013-04-29 12:46:34
你會使用圖像處理類來設置上傳時的寬度/高度(這實際上是你想要上傳圖像的最大寬度/高度); CSS會爲您提供另一個工具(上傳後),以強制您的圖像具有給定的最大寬度/高度。或者,您可以在上傳時檢查圖像的寬度/高度,並使用「if/else」檢查來確定圖像是否應該調整大小。前一種方法(使用CSS)爲您提供了更大的靈活性,如果您的設計發生變化並且圖像需要顯示更大或更小。 – Mudshark 2013-04-29 12:53:33
謝謝。我會考慮CSS的想法。現在可能已經足夠了。但如果沒有 - 如何在上傳時檢查圖像的寬度/高度? – einav 2013-04-29 13:00:10
你需要計算的高度和寬度,你想調整大小的圖像。例如:
採取由西爾維烏摹提供http://ellislab.com/codeigniter/user-guide/libraries/image_lib.html
$this->load->library('image_lib');
$config['image_library'] = 'gd2';
$config['source_image'] = 'originalImage.jpg';
$config['create_thumb'] = TRUE;
$config['width'] = 240;
$config['height'] = 200;
$this->load->library('image_lib', $config);
$this->image_lib->resize();
謝謝您的幫助。原來計算是不需要的,因爲CI會自動執行,如果你設置'$ config ['maintain_ratio'] = TRUE'。 – einav 2013-04-30 07:08:40
問題尚不清楚。想縮小尺寸不要調整大小? – Nish 2013-04-29 12:36:35
正如我在我的問題中所說的那樣,我只想在他們太大時縮小它們。如果它們不比我的最大寬度寬,也不比我的最大高度高,我不需要調整它們的大小。 – einav 2013-04-29 12:48:58