I have an image with the dimension of (W-3000 X H-4000). When i upload it and resize, it always show like landscape mode, mean new dimension is w-1067 X h-800. I want to create this picture either 800X600 for landscape or 600X800 for portrait. Here is my code:
$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";
}
}
}
In my code height is always 800px in size. It is ok for 3000X4000 dimension image. But what about when i use 4000X3000 dimension image? Can any one help me about this issue? Thanks
Thanks @Rpojka for your answer. But I fixed it with exif_read_data() . Here is my code:
$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();
}
}
}
Here is the exif orientation chart
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';
}
Even shorter, you can use 'auto' parameter for master_dim
that will determine which value is greater - width or height.
$filename = $_FILES['testing']['tmp_name'];
list($width, $height) = getimagesize($filename);
if ($width >= $height)
{
$config['width'] = 800;
}
else
{
$config['height'] = 800;
}
$config['master_dim'] = 'auto';