0

善良,我对此很陌生,可能缺少一些明显的东西。

我正在建立一个电子商务网站。产品都是独一无二的,单独拍照,也离线销售。订单量低,我希望能够通过简单地添加或删除目录中的图像文件来管理在线库存。为此,我将产品代码和产品尺寸(决定价格)存储在 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 仍被视为整数(例如 3)。

4

1 回答 1

1

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

于 2013-02-03T08:39:34.103 回答