我有一个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