初めての質問です。何卒よろしくお願いします。
状況
SC-01K
android7.1.1にて
webからカメラを起動した際
標準カメラを選択し撮影した画像データをアップロードし、
php側で保存しようとすると、正常に保存されません。
imagecreatefromjpegがうまく処理できていないようです。
同一機種における googleのカメラアプリや
SO-01J(android7.0)
や、iPhoneSE(iOS 10.3.3)
では正常に処理されております。
試したこと
- getimagesize
- exif_imagetype
- mime_content_type
で、ファイルタイプを調査しましたが、
いずれもjpegと判定されています。
photoupload.js
$.ajax({ url : './photoupload.php', type : 'POST', data : formdata, cache : false, contentType : false, processData : false, dataType : 'text' }) .done(function(data, textStatus, jqXHR){ //成功処理 }) .fail(function(jqXHR, textStatus, errorThrown){ //失敗処理 });
photoupload.php
$file_tmp = $_FILES['take-picture-input']['tmp_name']; //保存用ファイル名を設定 $timestamp = date('YmdHis', time()); $file_name = $timestamp.'.jpg'; $tmp_name = './tmp/upload/'.$file_name; $file_tmp = imagecreatefromjpeg($file_tmp); imagejpeg($file_tmp ,$tmp_name); echo $tmp_name;
12月25日11:30追記
asahina1979様 Tomak様
編集・追記のご依頼有難うございます。
正常に処理される機種ですと、
$file_tmp = imagecreatefromjpeg($file_tmp); imagejpeg($file_tmp ,$tmp_name);
の処理で、サーバ側の
$tmp_name = './tmp/upload/'.$file_name;
のディレクトリに画像が保存されるのですが、
該当の環境ですと、保存されません。
また、
正常に処理される実機でも
異常に処理される実機でも
正常に処理される実機でのみ
$file_tmp = imagecreatefromjpeg($file_tmp);
に対して
echo $file_tmp;
とすると、
Resource id #2
という値が帰ってきます。
該当部分のサーバログを確認しましたが、
特にエラーなど出していない様子です。
(IPや時間などは確認しているので、別のログを見ているわけではなさそうです)
12月25日18:05追記
補足になってしまいますが。
SC-01Kの「標準カメラアプリ」の「インカメラ」でのみ現状の現象が発生致します。
「アウトカメラ」では該当の現象は発生致しません。
12月25日22:50追記
以下テスト画像は全て同一機種SC-01Kで撮影しています。
動作する画像1
(SC-01Kのgoogleカメラアプリのアウトカメラで撮影)
4.2 MB
3024 × 4032
動作する画像2
(SC-01Kのgoogleカメラアプリのインカメラで撮影)
1.4 MB
2448 × 3264
動作する画像3
(SC-01K標準カメラアプリのアウトカメラで撮影)
2.7 MB
3024 × 4032
動作しない画像1
(SC-01K標準カメラアプリのインカメラで撮影)
1.5 MB
1592 × 3264
動作しない画像のみ、Macのプレビューのインスペクタを見ると
「JFIF」という項目があります。(他の画像に該当項目はありません。)
密度の単位: 2
JFIFバージョン: 1.0.1
幅の密度: 59
高さの密度: 59
と記述されています。
回答1件
あなたの回答
tips
プレビュー