2012-02-01 17 views
0

私は現時点でウェブサイトのメディアライブラリを作成していますが、そのうちの1つはアップロードした画像を切り取った画像を作成できることです。codeigniterで画像を切り抜くGD2ライブラリはありません - GD2はイントラフレームです

私の問題は、しかし、私がしようとすると、画像をトリミングするとき、私は次のエラーを取得する、ここで

The path to the image is not correct. 

だから私も、私は$config['source_image']を変更します

$config['image_library'] = 'gd2'; 
    $config['source_image'] = "/media/images/products/".$this->data['image']; 
    //die($config['source_image']); 
    $config['maintain_ratio'] = FALSE; 
    $config['x_axis'] = $this->input->post('x'); 
    $config['y_axis'] = $this->input->post('y'); 
    $config['width'] = $this->input->post('w'); 
    $config['height'] = $this->input->post('h'); 
    $config['dynamic_output'] = FALSE; 
    $config['create_thumb'] = TRUE; 
    $this->load->library('image_lib', $config); 

    if(!$this->image_lib->crop()) { 
     if($this->input->post('isAjax') == "1") { 
      echo json_encode($this->image_lib->display_errors()); 
     } else { 
      $this->data['image_error'] = $this->image_lib->display_errors(); 
      $this->template->build('/admin/media/crop', $this->data); 
     }  
    } else { 
     $filename = base_url()."media/images/products/".$this->data['image']; 
     $extension_pos = strrpos($filename, '.'); // find position of the last dot, so where the extension starts 
     $thumb = substr($filename, 0, $extension_pos) . '_thumb' . substr($filename, $extension_pos); 
     if($this->input->post('isAjax') == 1) { 
      echo json_encode($success = array('message' => 'Image Cropped')); 
     } else { 
      $this->data['success'] = "Image Cropped"; 
      $this->template->build('/admin/media/crop', $this->data); 
     } 
    } 

、私のコードで、これです以下に、

ちょうどこのメッセージを残ししかし
$config['source_image'] = "./media/images/products/".$this->data['image']; 

Your server does not support the GD function required to process this type of image. 

何か根本的に間違っていますか?私はシンプルな.pngを切り抜こうとしているだけで、ファイルは確実に私のサーバー上に存在し、GD2がインストールされています。

+0

GD2がインストールされている可能性がありますが、PNGサポートでコンパイルされましたか? GDがそこにあるからといって、すべての通常のファイル形式を処理できるわけではありません。 –

+0

ドキュメントルートからの絶対パスを試しましたか? '$ _SERVER ['DOCUMENT_ROOT']を試してください。 'rest/of/path/to/file' ' –

+0

はGD_INFOがサポートするものを教えてくれるでしょうか?そして、私はこのマシンでPNGを前もって切り刻んだ。 – Udders

答えて

0

ほとんどの場合、ファイルパスの問題です(CIは正確で関連性の高いエラーメッセージについてはかなり良い)。これを解決するための手順は次のとおりです。

  1. var_dump(file_exists($config['source_image']) PHPがファイルを検出したかどうかを確認します。私はここで「本当の」反応にショックを受けます。
  2. ファイルシステムは大文字と小文字が区別される場合は、抗段階の
  3. もっと(私は...定期的には、CIはここまでを取得した場合に正常に動作している含んと仮定)ことが
  4. には、パスを確認し、問題はありませんことを確認してくださいコメント欄に示すように、$_SERVER['DOCUMENT_ROOT']は使用しないでください。 FC_PATH(または他のCI定義の定数)は、必要な基本パスを取得する必要があります。

ハッピーハンティング。

+0

file_existsがTRUEを返します。 – Udders

+0

本当に困った。おそらく、関連する画像操作関数にいくつかの段階的なデバッグ出力を入れて、エラー状態に到達した場所を見つけるでしょうか? – landons

+0

は、私はフォームを 'controller/view'に提出していましたが、' $ this-> data ['image'] 'はURIセグメントから構成されていましたので、フォームを' current_url() 'に提出する必要があります。 – Udders

関連する問題