What is a good way to check if an image is unique using PHP?

后端 未结 5 1718
失恋的感觉
失恋的感觉 2021-01-20 21:29

What is the best way to check if an image is unique using PHP? Say I have a directory of about 30 images (about 500*500 pixels), and someone uploads another picture, what is

相关标签:
5条回答
  • 2021-01-20 22:00

    Byte-wise comparison of files will fail even when a small detail like a ID3 tag has changed. To compare the picture contents, you would have to open the image file and create a hash of the actual image pixel data. But even that can be undone by saving, say, a JPEG file twice with a slightly different quality level - the subtle encoding differences will create changes in the pixel colour values.

    So if you are really looking to match image contents across formats and qualities, you are opening a huge can of worms :)

    0 讨论(0)
  • 2021-01-20 22:02

    The system should just be able to filter out images that are excactly the same.

    In that case you could simply forget that you're talking about images and just treat them as binary files, using hash_file() to create a hash.

    Of course, this would also result in different hashes for images that differ only in metadata such as EXIF comments in JPEG images. You'll have to decide whether that's a problem for you.

    0 讨论(0)
  • 2021-01-20 22:15

    run a checksum on the file .. if it matches one you already have then its probably the same exact image.

    0 讨论(0)
  • 2021-01-20 22:18

    Use md5 or sha1 on image file.

    0 讨论(0)
  • 2021-01-20 22:21

    Quick answer, but I recommend this approach:

    • Use md5sum to hash the images (there's a function in PHP for this).
    • If you're using a database, have the md5sum be a column of a table of picture files, and index the table by that field.
    • Otherwise, keep the hashes in a flat file like this:

      68b329da9893e34099c7d8ad5cb9c940 file2.bmp
      da1e100dc9e7bebb810985e37875de38 file1.jpg
      
    0 讨论(0)
提交回复
热议问题