我有一张尺寸为(W-3000 X H-4000)的图像。当我上传它并调整大小时,它总是像横向模式一样显示,意味着新的维度是w-1067 X h-800。我想创建此图片800X600为横向或600X800为纵向。这是我的代码:
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'jpg|jpeg|gif|png';
$config['max_size'] = '5000';
$this->load->library('upload', $config);
//check if a file is being uploaded
if(strlen($_FILES["testimg"]["name"])>0){
if ( !$this->upload->do_upload("testimg"))//Check if upload is unsuccessful
{
$error = array('error' => $this->upload->display_errors());
print_r($errors);
}
else
{
$config['image_library'] = 'gd2';
$config['source_image'] = $this->upload->upload_path.$this->upload->file_name;
$config['width'] = '1';
$config['height'] = '800';
$config['maintain_ratio'] = TRUE;
$config['master_dim'] = 'height';
$this->load->library('image_lib',$config);
if (!$this->image_lib->resize()){
echo "error";
}else{
echo "success";
}
}
}
在我的代码中,高度总是800px。3000X4000尺寸的图像可以。但是当我使用4000X3000尺寸的图像时呢?有人能帮我解决这个问题吗?感谢
感谢@Rpojka的回答。但我用exif_read_data()修复了它。这是我的代码:
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'jpg|jpeg|gif|png';
$config['max_size'] = '6048';
$this->load->library('upload', $config);
//check if a file is being uploaded
if(strlen($_FILES["testimg"]["name"])>0){
if ( !$this->upload->do_upload("testimg"))//Check if upload is unsuccessful
{
$error = array('error' => $this->upload->display_errors());
print_r($errors);
}
else
{
$config['image_library'] = 'gd2';
$config['source_image'] = $this->upload->upload_path.$this->upload->file_name;
$filename = $_FILES['testimg']['tmp_name'];
$imgdata=exif_read_data($this->upload->upload_path.$this->upload->file_name, 'IFD0');
list($width, $height) = getimagesize($filename);
if ($width >= $height){
$config['width'] = 800;
}
else{
$config['height'] = 800;
}
$config['master_dim'] = 'auto';
$this->load->library('image_lib',$config);
if (!$this->image_lib->resize()){
echo "error";
}else{
$this->image_lib->clear();
$config=array();
$config['image_library'] = 'gd2';
$config['source_image'] = $this->upload->upload_path.$this->upload->file_name;
switch($imgdata['Orientation']) {
case 3:
$config['rotation_angle']='180';
break;
case 6:
$config['rotation_angle']='270';
break;
case 8:
$config['rotation_angle']='90';
break;
}
$this->image_lib->initialize($config);
$this->image_lib->rotate();
}
}
}
这是exif方向图
1 2 3 4 5 6 7 8
888888 888888 88 88 8888888888 88 88 8888888888
88 88 88 88 88 88 88 88 88 88 88 88
8888 8888 8888 8888 88 8888888888 8888888888 88
88 88 88 88
88 88 888888 888888
$filename = $_FILES['testing']['tmp_name'];
list($width, $height) = getimagesize($filename);
if ($width >= $height)
{
$config['width'] = 800;
$config['master_dim'] = 'width';
}
else
{
$config['height'] = 800;
$config['master_dim'] = 'height';
}
更短的是,您可以对master_dim
使用"auto"参数,该参数将确定哪个值更大——宽度或高度。
$filename = $_FILES['testing']['tmp_name'];
list($width, $height) = getimagesize($filename);
if ($width >= $height)
{
$config['width'] = 800;
}
else
{
$config['height'] = 800;
}
$config['master_dim'] = 'auto';