2011-06-17 17 views
0

Iveは画像を追加するいくつかの方法を取り入れ、phpとmysqlを使って画像ギャラリーを作成しました。&追加方法やカテゴリでソートする機能。リンゴのデバイスからのいくつかのイメージが「間違った」向きで表示されたことに気づいた後、私は向きや他のファイル情報を編集する別のページを作成し、その変更をファイルとdbに保存し直しました。私がこの問題を解決したと思った後で、リンゴのデバイス上の変更されたイメージを見ただけで、そのイメージがそのデバイスの「間違った」向きになっていたことを認識しました。私はこれをグーグルで見つけましたが、この状況でリンゴデバイスの画像を処理するために今私が今学ぶ必要があるものを正確に把握することはできません。正しい方向への押しは大いに感謝されるでしょう。PHPの画像ギャラリー - iPhone/iPadの画像を扱う

ありがとうございます!

+0

は、ユーザーに送信する前に、それらをバックフリップ以上にユーザーのためのオプションを作るその反転した画像に、その後に反転されてデシベルでメモしておいてくださいあなたのフォールトユーザが間違った向きでイメージを追加するのではなく、ダウンロード/表示する前にオリエンテーションを選択してください。 –

+0

私はこれを理解しようとしている最後の3日間を過ごしました。私が望むのは、アップロードされたiphone画像を見たいと思った方法で表示することだけです。コンピュータの画面(pcまたはmacbook)に正しく表示されるように画像を回転させると、それは問題ありませんが、iphone/ipadで見ると画像の向きがオフになります。私はちょうど私のサーバーに格納されている画像を表示するためにPHPを使用していますが、それほど単純ではない答えも見つけられません。私は何百もの記事を読んで、何百ものリンクをたどりました。 Googleは元の投稿を提供した(私はそれを投稿した20分前の金曜日)。私はIOSのプログラマになる必要がありますか? – Mark

+0

OK、これは一時的なダクトテープソリューションですが、jhead -notを使用してexif rotationタグをクリアしました。誰かがより良い提案をしているなら、私はそれを聞いてみたい。 – Mark

答えて

0

忘れました。これを投稿しました。オリエンテーションの問題を処理する方法を考え出したので、分かち合うと思った。今はシンプルだね。私はCodeigniterを使ってこのプロジェクトを作り直しました。 CIは素晴らしく、時間を大幅に節約することができますが、私は初めてこれをすべて自分で書きました。私は確かにそのように多くを学んだ。

最初にファイルがjpgの場合は、PELというEXIFデータを取得します。

$newは、向きを確認するためにアップロードされたファイルです。

 $this->load->library('pel/PelJpeg'); 


     if($ext == 'jpg'){ 
      $pdw= new PelDataWindow(file_get_contents($new)); 
      if(PelJpeg::isValid($pdw)){ 
       $input_jpg = new PelJpeg($new); 
       $exif = $input_jpg->getExif(); 
      } 
     } 

その後EXIFが存在する場合は、オリエンテーション値を取得し、switchステートメントを介して実行、それに応じて回転させ、その後、姿勢値をリセットします。私はimage_mooとCodeigniterを使用していますが、これは明らかに画像操作ライブラリを使用するように変更することができます。

これらすべての場合のステートメントはそこにする必要がある場合、私は正直わからないんだけど、私はいくつかのEXIF情報を含まれ、それらなしでスクリプトを爆破しまうのjpgのとトラブルに走り続けました。

if($exif !== NULL){ 
if($tiff = $exif->getTiff()){ 
if($ifd0 = $tiff->getIfd()){ 
if($orient = $ifd0->getEntry(PelTag::ORIENTATION)){ 
$this->image_moo->load($new); 

//find the orientation value from the orientation tag. May be a better way, but this works for me.          
$orientation = str_replace(' ', '', $orient); 
//The orientation value from the orientation tag is after 'Value:' 
if (($tmp = strstr($orientation, 'Value:')) !== false) { 
     $str = substr($tmp, 6, 1); 
} 

switch ($str) 
{ 
    // up is pointing to the right 
    case 8: 
     $this->image_moo->rotate(90); 
     $orient->setValue(1); 
     break; 
    // image is upside-down 
    case 3: 
     $this->image_moo->rotate(180); 
     $orient->setValue(1); 
     break; 
    // up is pointing to the left 
    case 6: 
     $this->image_moo->rotate(270); 
     $orient->setValue(1); 
     break; 
    // correct orientation 
    case 1: 
     break; 
     } 
    $this->image_moo->save($new,TRUE); 
    if ($this->image_moo->errors) print $this->image_moo->display_errors(); 
    $this->image_moo->clear(); 
} 
} 
} 
} 

これは、同じ問題で苦労している他の人にとって役に立ちます。 改善が見られるものがあれば教えてください。しかし、これは私のために素晴らしい作品です。あなたがiPhone/iPadの電気ショック療法からの画像を扱うための方法を持っている場合

マーク

1

私の「gallery3」フォトギャラリーで同じ問題が発生しています。 machouinardのように、私は "jhead -norot filename.jpg"を使用して画像から向きのヘッダーを取り除いています。これは、Appleの回転の問題を修正し、他のブラウザを台無しにするようなことはありません。

ファイルをまとめて編集するには、(gallerytop)/ lib/albumsのアルバム保存領域に直接アクセスし、find -type f | xargs sudo jhead -norotを実行します。それは、修正が必要なファイルだけを修正するほどスマートで、作業中にstdoutにそれらのリストを出力します。

ギャラリー3にサムネイルを更新させるには、データベースに入り、次のような「汚れた」フラグを設定します:echo "update items set thumb_dirty=1,resize_dirty=1 where relative_path_cache like 'ALBUMNAME/%';" | mysql -u root -p gallery3。その後、私はギャラリーのメンテナンスモードに入り、 "イメージの再構築"ユーティリティを実行します。

関連する問題