2014-11-28 2 views
-2

Я использую для отображения exif-данных изображения.PHP substring extrac и calulate

это код

<?php 

    $filename = "http://www.rallyfun.net/images/20140921231511_img_7369.jpg"; 


    $exif = exif_read_data($filename, 0, true); 

    echo "Exposure: " . $exif["EXIF"]["ExposureTime"] . " sec.<br />"; 
    echo "F: " . $exif["EXIF"]["FNumber"] . "<br />"; 
    echo "ISO: " . $exif["EXIF"]["ISOSpeedRatings"] . "<br />"; 

?> 

это результат:

Exposure: 1/6400 sec. 
F: 63/10 sec. 
ISO: 1000 

результат нормально для отверстия, за исключением: она должна отображаться как (в данном случае) 6,3, так что мне нужно для деления первого числа (63) с номером после «/» (10).

как?

+0

если ваш второй эхо-чтения 'эхо "F:". $ exif ["EXIF"] ["FNumber"]. "сек.
"; '? – ymas

ответ

0

U можно использовать explode для этого.

$tmp = explode('/', str_replace(' sec.', '', $exif["EXIF"]["FNumber"])); 
echo "F: " . ($tmp[0]/$tmp[1]) . "sec<br />"; 
+0

как насчет' 'sec'' – TomSawyer

+0

@TomSawyer на самом деле это не замечалось. Думал, что он вторит «сек» – DarkBee

+0

, это работает! извините за 'сек' мою ошибку. Я оставил его, когда я проложил первую строку. Это полный рабочий код: // Получить данные EXIF ​​ $ exif = exif_read_data ($ filename, 0, true); // Echo the ExposureTime item (и некоторый контекст) echo "Exposure:". $ exif ["EXIF"] ["ExposureTime"]. "сек.
"; $ tmp = explode ('/', str_replace ('', '', $ exif ["EXIF"] ["FNumber"])); Эхо "F:". ($ tmp [0]/$ tmp [1]). "
"; Эхо "F:". $ exif ["EXIF"] ["ISOSpeedRatings"]. «ISO
»; – Enrico

0

Попробуйте следующее:

$n = $exif["EXIF"]["FNumber"]; 
$whole = floor($n);  // 63 
$fraction = $n - $whole; // .10 

$result=$whole/$fraction; 
+0

i'm gettign «Предупреждение: деление на ноль», возможно, cacuase $ n равно 63/10, а не 63.10 (slash intesad of point) – Enrico

+0

есть нормальное число с плавающей запятой, отдельное с '.' – ashkufaraz

0

Вы можете использовать этот код для отображения диафрагмы:

preg_match('/([0-9]+)\/([0-9]+)/',$exif["EXIF"]["FNumber"],$m); 
if($m[1] && $m[2]) 
{ 
    $newaperture = $m[1]/$m[2]; 
    echo $newaperture; 
} 
Смежные вопросы