0

私は最近 php 関数に出くわしましたexif_read_data- これはかなり素晴らしいです。私は自分の写真サイトでそれを使用しています。かなりうまく機能していますが、なぜ機能しないのかを理解するのに苦労してApertureFNumberいます. 私が使用しているコードは次のとおりです。

$exif_data = exif_read_data($image[0]);

echo $exif_data['Model'];
echo $exif_data['ExposureTime'];
echo $exif_data['FNumber'];
echo $exif_data['ApertureFNumber'];
echo $exif_data['ISOSpeedRatings'];
echo $exif_data['DateTime'];

(スタイリングは外しました)

空白を返すだけで動作するため、テストにも使用FNumberしました。他のすべてのフィールドは正常に機能します。ApertureFNumberFNumberApertureFNumber

$exif_data の var_dump を実行しました - これが得られるものです (要約版):

["ApertureFNumber"]=> string(5) "f/3.5"
["FNumber"]=> string(5) "35/10"

私はそれが機能するのを逃しましたFNumberが、ApertureFNumber機能しませんか?

--

編集 - 要求に応じて追加された完全な var_dump

array(52) { ["FileName"]=> string(18) "MYD-67-900x602.jpg" ["FileDateTime"]=> int(0) ["FileSize"]=> int(123278) ["FileType"]=> int(2) ["MimeType"]=> string(10) "image/jpeg" ["SectionsFound"]=> string(30) "ANY_TAG, IFD0, THUMBNAIL, EXIF" ["COMPUTED"]=> array(9) { ["html"]=> string(24) "width="900" height="602"" ["Height"]=> int(602) ["Width"]=> int(900) ["IsColor"]=> int(1) ["ByteOrderMotorola"]=> int(0) ["ApertureFNumber"]=> string(5) "f/3.5" ["FocusDistance"]=> string(14) "4294967296.00m" ["Thumbnail.FileType"]=> int(2) ["Thumbnail.MimeType"]=> string(10) "image/jpeg" } ["Make"]=> string(17) "NIKON CORPORATION" ["Model"]=> string(9) "NIKON D60" ["XResolution"]=> string(5) "200/1" ["YResolution"]=> string(5) "200/1" ["ResolutionUnit"]=> int(2) ["Software"]=> string(41) "Adobe Photoshop Lightroom 4.4 (Macintosh)" ["DateTime"]=> string(19) "2013:07:06 10:07:40" ["Exif_IFD_Pointer"]=> int(216) ["THUMBNAIL"]=> array(6) { ["Compression"]=> int(6) ["XResolution"]=> string(5) "200/1" ["YResolution"]=> string(5) "200/1" ["ResolutionUnit"]=> int(2) ["JPEGInterchangeFormat"]=> int(932) ["JPEGInterchangeFormatLength"]=> int(8995) } ["ExposureTime"]=> string(5) "1/800" ["FNumber"]=> string(5) "35/10" ["ExposureProgram"]=> int(1) ["ISOSpeedRatings"]=> int(100) ["ExifVersion"]=> string(4) "0230" ["DateTimeOriginal"]=> string(19) "2008:10:30 16:04:34" ["DateTimeDigitized"]=> string(19) "2008:10:30 16:04:34" ["ShutterSpeedValue"]=> string(15) "9643856/1000000" ["ApertureValue"]=> string(13) "361471/100000" ["ExposureBiasValue"]=> string(3) "0/6" ["MaxApertureValue"]=> string(5) "36/10" ["SubjectDistance"]=> string(4) "-1/1" ["MeteringMode"]=> int(5) ["LightSource"]=> int(0) ["Flash"]=> int(0) ["FocalLength"]=> string(4) "18/1" ["SubSecTimeOriginal"]=> string(2) "50" ["SubSecTimeDigitized"]=> string(2) "50" ["SensingMethod"]=> int(2) ["FileSource"]=> string(1) "" ["SceneType"]=> string(1) "" ["CFAPattern"]=> string(8) "" ["CustomRendered"]=> int(0) ["ExposureMode"]=> int(1) ["WhiteBalance"]=> int(0) ["DigitalZoomRatio"]=> string(3) "1/1" ["FocalLengthIn35mmFilm"]=> int(27) ["SceneCaptureType"]=> int(0) ["GainControl"]=> int(0) ["Contrast"]=> int(0) ["Saturation"]=> int(0) ["Sharpness"]=> int(0) ["SubjectDistanceRange"]=> int(0) ["UndefinedTag:0xA431"]=> string(7) "6265825" ["UndefinedTag:0xA432"]=> array(4) { [0]=> string(4) "18/1" [1]=> string(4) "55/1" [2]=> string(5) "35/10" [3]=> string(5) "56/10" } ["UndefinedTag:0xA434"]=> string(22) "18.0-55.0 mm f/3.5-5.6" }
4

2 に答える 2

2

これを試して:

$exif = exif_read_data($image[0]);
foreach($exif as $exif_data){
echo $exif_data['Model']."<br/>";
echo $exif_data['ExposureTime']."<br/>";
echo $exif_data['FNumber']."<br/>";
echo "ApertureFNumber is:" .$exif_data['ApertureFNumber']."<br/>";
echo $exif_data['ISOSpeedRatings']."<br/>";
echo $exif_data['DateTime']."<br/>";
}
于 2013-09-07T18:23:11.550 に答える
0

それで、私はこれを理解しました-そして、あなたが答えを見たいと思うかもしれないと思いました.

var_dump は data を提供して["ApertureFNumber"]=> string(5) "f/3.5"いましたが、実際にはどこにも到達しなかったため、代わりに を使用しprint_r($exif_data)ました。これにより、次のような有用なデータが大量に出力されました。

[COMPUTED] => Array
        (
            [html] => width="1000" height="667"
            [Height] => 667
            [Width] => 1000
            [IsColor] => 1
            [ByteOrderMotorola] => 0
            [ApertureFNumber] => f/3.5
            [Thumbnail.FileType] => 2
            [Thumbnail.MimeType] => image/jpeg
            [Thumbnail.Height] => 171
            [Thumbnail.Width] => 256
        )

したがって、必要なものをエコーアウトするためApertureFNumberに、単に使用
echo $exif['COMPUTED']['ApertureFNumber'];しました。これは、印刷された配列内のどの情報に対しても機能します。

うまくいけば、これは将来誰かを助けるでしょう。

于 2013-10-14T13:57:31.963 に答える