2014-03-25 190 views
0

我需要根据宽度只有,高度不:( 来调整我的图片,因为我使用** ** $config['maintain_ratio'] = TRUE; ,笨自动解决它(那问题)有时我得到一个黑色固体作为一个额外的宽度或高度,调整图像大小,笨

我已经看过了所有与codegniter的形象 库的问题,我找不到与我的问题:(

什么

这里是最后的结果说明... I need to resize according to width only , not height :(

上传完成后我有这个...

$this->load->library('md_image'); 
     $source='assets/img/hotellist/'.$data1['hotel_pictures']; 
     $width=746; 
     $height=400; 
     $dest = FALSE; 
     //$this->md_image->resize_image($source, $width, $height, $source); 
      $config['image_library'] = 'gd2';//imagemagik 
      $config['source_image'] = 'assets/img/hotellist/'.$data1['hotel_pictures']; 
      //$config['image_library'] = 'imagemagick'; 
      //$config['library_path'] = '/usr/X11R6/bin/'; 
      $config['create_thumb'] = FALSE; 
      $config['maintain_ratio'] = TRUE; 
      $config['width']  = 746; 
      $config['height'] = 400; 
      $config['quality'] = 75; 
      $config['encrypt_name'] = TRUE; 
      $config['remove_spaces'] = TRUE; 
      //$config['x_axis'] = 100; 
      //$config['y_axis'] = 300; 
      $img =$config['source_image']; 
      //var_dump('check problem',$config['source_image']); 

      $this->load->library('image_lib', $config); 

      $this->image_lib->resize(); 

那么我走裁剪部分

$new_img =$this->md_image->crop_to_ratio($source, $width, $height, $x = 17, $y = 9, $dest = FALSE); 

的关怀总结一下,有人上传一张图片,它根据宽度调整大小只有 Step 1 然后它就会冒出Step 2

PS:柜面有人需要它md_image

+1

问题出在哪里发生,在调整或作物? – jcorry

+0

对不起,延迟回复, 有时,当图像的高度很大,即+ 700px的作物没有调整大小,如果高度稍大一点,即+ 100px,它会在调整大小后留下黑色的实体...希望此信息有助于@jcorry,谢谢。 – Fahad

+0

如果我得到image_magick只根据高度调整大小,它对我来说是一个很大的成就,裁剪不是问题...如果我给它正确的尺寸width-> 700px高度 - >(*大于> 400px *)它庄稼棒! – Fahad

回答

2
$this->load->library('md_image'); 
     $source='assets/img/hotellist/'.$data1['hotel_pictures']; 
     $width=746; 
     $height=400; 
     $size = getimagesize($source); 
     $resize_height=($size[1]*746)/$size[0]; 
     $dest = FALSE; 
     //$this->md_image->resize_image($source, $width, $height, $source); 
      $config['image_library'] = 'gd2';//imagemagik 
      $config['source_image'] = 'assets/img/hotellist/'.$data1['hotel_pictures']; 
      //$config['image_library'] = 'imagemagick'; 
      //$config['library_path'] = '/usr/X11R6/bin/'; 
      $config['create_thumb'] = FALSE; 
      $config['maintain_ratio'] = TRUE; 
      $config['width']  = 746; 
      $config['height'] = $resize_height; 
      $config['quality'] = 75; 
      $config['encrypt_name'] = TRUE; 
      $config['remove_spaces'] = TRUE; 
      //$config['x_axis'] = 100; 
      //$config['y_axis'] = 300; 
      $img =$config['source_image']; 
      //var_dump('check problem',$config['source_image']); 

      $this->load->library('image_lib', $config); 

      $this->image_lib->resize(); 
+2

请考虑使用代码注释来详细说明此解决方案,或者解释您更改的内容以及它如何/为什么会起作用。简单地发布代码将无助于原始海报或任何其他人学到很多东西。我建议阅读[如何写出一个好答案](http://stackoverflow.com/help/how-to-answer)。 – Daniel

+0

谢谢你回复user3641704,我不知道,但由于某种原因,我有我的**图像扭曲**第一次在裁剪之前我失去了图像分辨率,_可能是你应该考虑详细说明你的答案,就像@丹尼尔说的:) – Fahad

+0

谢谢@ user3641704 #Cumali :) – Fahad

1
function resize_than_crop($path, $new_path, $width = 400, $height = 746) { 

    $this->load->library('image_lib'); 

    $this->image_lib->initialize(array(
     'image_library' => 'gd2', 
     'source_image' => $path, 
     'new_image' => $new_path, 
     'maintain_ratio' => true, 
     'master_dim' => 'width', 
     'width' => $width 
    )); 
    $this->image_lib->resize(); 

    $this->image_lib->clear(); 

    $this->image_lib->initialize(array(
     'image_library' => 'gd2', 
     'source_image' => $new_path, 
     'height' => $height 
    )); 
    $this->image_lib->crop(); 
} 
+0

感谢您花时间写这篇文章,但@ user3641704已经回答了,我会考虑在未来的项目中测试您的解决方案 – Fahad