質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

1046閲覧

exifデータを保持したまま画像の保存

silksummer

総合スコア18

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/01/16 06:02

編集2019/01/16 07:34

web上で携帯などで撮影した写真を送信してもらいそれをローカル内のフォルダーに保存をするという流れになっています。
しかし、今のやり方では必要な緯度経度の情報が失われた状態でフォルダーに保存されるようになっています。
もし、exifデータを保持したまま保存できる方法がありましたらお教え願います。
今の画像保存の部分です

php

1function changeImageSize($img, $maxsize) { 2 if (!$img){ 3 return false; 4 } 5 $w0 = imageSx($img); // 画像リソースの幅 6 $h0 = imageSy($img); // 画像リソースの高さ 7 return array( 8 'w0'=>$w0, // 元画像の幅 9 'h0'=>$h0, // 元画像の高さ 10 'w1'=>$w0, // 保存画像の幅 11 'h1'=>$h0, // 保存画像の高さ 12 ); 13} 14 // $file = $_FILES['file']; 15 $file = $_FILES['image']; 16 $tmp_name = $file['tmp_name']; 17 var_dump("エラーは".$file["error"]); 18 $tmp_size = getimagesize($tmp_name); // 一時ファイルの情報を取得 19 $img = $extension = null; 20 $exif=exif_read_data($tmp_name); 21 $lat=$exif["GPSLatitude"]; 22 $lon=$exif["GPSLongitude"]; 23 var_dump($lat); 24 var_dump($lon); 25 var_dump("画像の種類は".$tmp_size[2]); 26 switch ($tmp_size[2]) { // 画像の種類を判別 27 case 1 : // GIF 28 $img = imageCreateFromGIF($tmp_name); 29 $extension = 'gif'; 30 break; 31 case 2 : // JPEG 32 $img = imageCreateFromJPEG($tmp_name); 33 $extension = 'jpg'; 34 break; 35 case 3 : // PNG 36 $img = imageCreateFromPNG($tmp_name); 37 $extension = 'png'; 38 break; 39 default : break; 40 } 41 $save_dir = '../images/'; 42 $save_filename = date('YmdHis'); 43 $save_basename = $save_filename. '.'. $extension; 44 $save_path =$save_dir. $save_basename; 45 while (file_exists($save_path)) { // 同名ファイルがあればファイル名を変更する 46 $save_filename .= mt_rand(0, 9); 47 $save_basename = $save_filename. '.'. $extension; 48 $save_path = $save_dir. $save_basename; 49 } 50 $maxsize=480; 51 $img_size = changeImageSize($img, $maxsize); // 最大500pxの画像サイズ 52 $out = imageCreateTrueColor($img_size['w1'], $img_size['h1']); // 新しい画像データ 53 54 // 背景色を設定する 55 $color_white = imageColorAllocate($out, 255, 255, 255); // 色データを作成 56 imageFill($out, 0, 0, $color_white); 57 58 // $imgの画像情報を$outにコピーする 59 imageCopyResampled( 60 $out, // コピー先 61 $img, // コピー元 62 0, 0, 0, 0, // 座標(コピー先:x, コピー先:y, コピー元:x, コピー元:y) 63 $img_size['w1'], $img_size['h1'], $img_size['w0'], $img_size['h0'] // サイズ(コピー先:幅, コピー先:高さ, コピー元:幅, コピー元:高さ) 64 );

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2019/01/16 06:11

何も考えずに保存すればむしろexifは残るはず。既存コードで削除している可能性が高いです。ってことは既存コードがないと解決できない(Imagemagickとかをgrepしたらいいのかもしれない)
ttyp03

2019/01/16 06:13

「今のやり方」を書いてくれないと。
yoorwm

2019/01/16 06:15

「今のやり方」で通用する人なら、「このやり方でできます!(ドヤァ」と言ってやれば通じるんじゃないすかね?
m.ts10806

2019/01/16 07:17

インデントおかしいですね。 関数定義以降が字下げされてます。
m.ts10806

2019/01/16 07:20

コード提示はいいですが、コメントアウトされたコード部分はノイズになります。整理してください。
guest

回答1

0

あらかじめexif_read_dataで読んでおく

で、Imagick::setImagePropertyとかで書く。
(書くほうがImagemagickを使うくらいしか見つからなかったです)

投稿2019/01/16 06:44

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問