質問編集履歴

2

コメントアウトを削除した

2019/01/16 07:34

投稿

silksummer
silksummer

スコア18

test CHANGED
File without changes
test CHANGED
@@ -19,32 +19,6 @@
19
19
  $w0 = imageSx($img); // 画像リソースの幅
20
20
 
21
21
  $h0 = imageSy($img); // 画像リソースの高さ
22
-
23
- // if ($w0 > $h0) {
24
-
25
- // if ($w0 > $maxsize) {
26
-
27
- // $w1 = $maxsize;
28
-
29
- // $h1 = $h0 * ($maxsize / $w0);
30
-
31
- // }
32
-
33
- // } else {
34
-
35
- // if ($h0 > $maxsize) {
36
-
37
- // $w1 = $w0 * ($maxsize / $h0);
38
-
39
- // $h1 = $maxsize;
40
-
41
- // }
42
-
43
- // }
44
-
45
- // $w1="960";
46
-
47
- // $h1="1706";
48
22
 
49
23
  return array(
50
24
 

1

コードを記載した

2019/01/16 07:34

投稿

silksummer
silksummer

スコア18

test CHANGED
File without changes
test CHANGED
@@ -2,4 +2,164 @@
2
2
 
3
3
  しかし、今のやり方では必要な緯度経度の情報が失われた状態でフォルダーに保存されるようになっています。
4
4
 
5
- もし、exifデータを保持したまま保存できる方法がありましたらお教え願います
5
+ もし、exifデータを保持したまま保存できる方法がありましたらお教え願います
6
+
7
+ 今の画像保存の部分です
8
+
9
+ ```php
10
+
11
+ function changeImageSize($img, $maxsize) {
12
+
13
+ if (!$img){
14
+
15
+ return false;
16
+
17
+ }
18
+
19
+ $w0 = imageSx($img); // 画像リソースの幅
20
+
21
+ $h0 = imageSy($img); // 画像リソースの高さ
22
+
23
+ // if ($w0 > $h0) {
24
+
25
+ // if ($w0 > $maxsize) {
26
+
27
+ // $w1 = $maxsize;
28
+
29
+ // $h1 = $h0 * ($maxsize / $w0);
30
+
31
+ // }
32
+
33
+ // } else {
34
+
35
+ // if ($h0 > $maxsize) {
36
+
37
+ // $w1 = $w0 * ($maxsize / $h0);
38
+
39
+ // $h1 = $maxsize;
40
+
41
+ // }
42
+
43
+ // }
44
+
45
+ // $w1="960";
46
+
47
+ // $h1="1706";
48
+
49
+ return array(
50
+
51
+ 'w0'=>$w0, // 元画像の幅
52
+
53
+ 'h0'=>$h0, // 元画像の高さ
54
+
55
+ 'w1'=>$w0, // 保存画像の幅
56
+
57
+ 'h1'=>$h0, // 保存画像の高さ
58
+
59
+ );
60
+
61
+ }
62
+
63
+ // $file = $_FILES['file'];
64
+
65
+ $file = $_FILES['image'];
66
+
67
+ $tmp_name = $file['tmp_name'];
68
+
69
+ var_dump("エラーは".$file["error"]);
70
+
71
+ $tmp_size = getimagesize($tmp_name); // 一時ファイルの情報を取得
72
+
73
+ $img = $extension = null;
74
+
75
+ $exif=exif_read_data($tmp_name);
76
+
77
+ $lat=$exif["GPSLatitude"];
78
+
79
+ $lon=$exif["GPSLongitude"];
80
+
81
+ var_dump($lat);
82
+
83
+ var_dump($lon);
84
+
85
+ var_dump("画像の種類は".$tmp_size[2]);
86
+
87
+ switch ($tmp_size[2]) { // 画像の種類を判別
88
+
89
+ case 1 : // GIF
90
+
91
+ $img = imageCreateFromGIF($tmp_name);
92
+
93
+ $extension = 'gif';
94
+
95
+ break;
96
+
97
+ case 2 : // JPEG
98
+
99
+ $img = imageCreateFromJPEG($tmp_name);
100
+
101
+ $extension = 'jpg';
102
+
103
+ break;
104
+
105
+ case 3 : // PNG
106
+
107
+ $img = imageCreateFromPNG($tmp_name);
108
+
109
+ $extension = 'png';
110
+
111
+ break;
112
+
113
+ default : break;
114
+
115
+ }
116
+
117
+ $save_dir = '../images/';
118
+
119
+ $save_filename = date('YmdHis');
120
+
121
+ $save_basename = $save_filename. '.'. $extension;
122
+
123
+ $save_path =$save_dir. $save_basename;
124
+
125
+ while (file_exists($save_path)) { // 同名ファイルがあればファイル名を変更する
126
+
127
+ $save_filename .= mt_rand(0, 9);
128
+
129
+ $save_basename = $save_filename. '.'. $extension;
130
+
131
+ $save_path = $save_dir. $save_basename;
132
+
133
+ }
134
+
135
+ $maxsize=480;
136
+
137
+ $img_size = changeImageSize($img, $maxsize); // 最大500pxの画像サイズ
138
+
139
+ $out = imageCreateTrueColor($img_size['w1'], $img_size['h1']); // 新しい画像データ
140
+
141
+
142
+
143
+ // 背景色を設定する
144
+
145
+ $color_white = imageColorAllocate($out, 255, 255, 255); // 色データを作成
146
+
147
+ imageFill($out, 0, 0, $color_white);
148
+
149
+
150
+
151
+ // $imgの画像情報を$outにコピーする
152
+
153
+ imageCopyResampled(
154
+
155
+ $out, // コピー先
156
+
157
+ $img, // コピー元
158
+
159
+ 0, 0, 0, 0, // 座標(コピー先:x, コピー先:y, コピー元:x, コピー元:y)
160
+
161
+ $img_size['w1'], $img_size['h1'], $img_size['w0'], $img_size['h0'] // サイズ(コピー先:幅, コピー先:高さ, コピー元:幅, コピー元:高さ)
162
+
163
+ );
164
+
165
+ ```