图像调整大小时,Codeigniter图像旋转
我有一个尺寸为(W-3000 X H-4000)的图像。当我上传并调整大小时,它总是显示为横向模式,意味着新的尺寸是w-1067 X h-800。我想创建这张照片800X600的风景或600X800的肖像。这里是我的代码:图像调整大小时,Codeigniter图像旋转
$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尺寸图像时呢?任何人都可以帮我解决这个问题吗?由于
$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
“自动”的参数,将决定其值越大 - 宽度或高度。
$filename = $_FILES['testing']['tmp_name'];
list($width, $height) = getimagesize($filename);
if ($width >= $height)
{
$config['width'] = 800;
}
else
{
$config['height'] = 800;
}
$config['master_dim'] = 'auto';
我已经和2448X3264尺寸图像尝试过。当我调整大小时,它显示800X600图像。但调整大小的图像旋转。我想我应该使用exif。 –
感谢@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
很好的解决方案。只是文件类型的awware,因为文件类型,这将是很好的处理它像'if(exif_imagetype('image.gif')== IMAGETYPE_JPEG或exif_imagetype('image.gif')== IMAGETYPE_TIFF_II或exif_imagetype( 'image.gif')== IMAGETYPE_TIFF_MM){ //其余代码 } else {// handle exception}' – Tpojka
感谢您的信息:) –
没问题,我在[PHP文档](http: /php.net/manual/en/function.exif-imagetype.php)。虽然对你有好处。 – Tpojka
使用和getimagesize() – Vickel