PHP:来自JPEG EXIF的字符串被视为整数

时间:2013-02-03 08:16:01

标签: php integer exif

善待,我对此很新,可能会遗漏一些明显的东西。

我正在建立一个电子商务网站。产品都是独一无二的,单独拍照,也可以离线销售。订单量很低,我想通过简单地添加或删除目录中的图像文件来管理在线库存。为此,我将产品代码和产品大小(确定价格)存储在JPEG文件的EXIF数据中。意图是每小时生成一个CSV并将其导入商店软件。

但是,我无法理解为什么不能对从EXIF数据中提取的字符串执行计算。

这是我的错误代码:         

    $dir    = '.';
    $all_names = scandir($dir);
    $ignore = array(".", "..", "sold", "onhold", "exifread.php");
    $files = array_diff($all_names, $ignore);


    foreach ($files as $file) {

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

    $ifd0 = $exif[IFD0];

    $size = $ifd0['Comments'];
    $prod_code = $ifd0['Author'];
    $time_taken = $ifd0['DateTime'];
    $price_per_m2 = 102;
    $gst = 1.1;
    $total_price = ($size * $price_per_m2) * $gst;

    echo "$file;$size;$prod_code;$time_taken;$total_price<br />\n";
    }

    ?>

$ size被视为一个整数,但大小都是m2,有两位小数(例如3.45)。

我尝试使用str_replace删除'。'乘以1.02而不是102,但是当$ size正确回显(例如345)时,乘法($ total_price)表明$ size仍然被视为一个ineger(例如3)。

1 个答案:

答案 0 :(得分:1)

EXIF数据编码为UTF-16LE。您需要先将它通过iconv等转换为ASCII,然后才能在计算中使用它,以免在第一个NUL中被截断。