代码之家  ›  专栏  ›  技术社区  ›  alex

哪些图像格式包含元数据,如何在PHP中清除它?

  •  6
  • alex  · 技术社区  · 15 年前

    隐私问题让我相信我应该清除用户上传的图片中的任何元数据。

    我知道jpeg EXIF 但是我不确定PNG和GIF(两者都可以从公共网站上传到我的网站)。

    这些格式是否也有元数据,以及如何存储元数据?移除它的最佳方法是什么?

    我使用的是php 5.29。

    谢谢

    4 回复  |  直到 13 年前
        1
  •  2
  •   Maerlyn    15 年前

    最简单的方法是用gd将它们复制到一个新的映像中——保留所有的映像信息,但去掉元数据。

        2
  •  3
  •   uKolka    13 年前

    你可以试试 http://www.php.net/manual/en/imagick.stripimage.php

    $f = '16262403.jpg';
    $i = new Imagick($f);
    $p = $i->getImageProperties();
    var_dump($p);
    array(5) {
      ["comment"]=>
      string(20) "(C) Drom.ru #4495317"
      ["date:create"]=>
      string(25) "2012-05-29T17:15:32+03:00"
      ["date:modify"]=>
      string(25) "2012-05-29T17:15:30+03:00"
      ["jpeg:colorspace"]=>
      string(1) "2"
      ["jpeg:sampling-factor"]=>
      string(11) "2x2,1x1,1x1"
    }
    
    $i->stripImage();
    
    $p = $i->getImageProperties();
    var_dump($p);
    array(2) {
      ["jpeg:colorspace"]=>
      string(1) "2"
      ["jpeg:sampling-factor"]=>
      string(11) "2x2,1x1,1x1"
    }
    
        3
  •  0
  •   nacho4d    15 年前

    两者都有元数据;)

        4
  •  0
  •   Esko    15 年前

    所有使用任何类型压缩的图像都包含元数据。有些是非常谦虚的,而其他格式告诉你的比你需要的更多。

    推荐文章