2011-10-21 60 views
1

我目前正在處理大量圖像(超過3000個),並且每個圖像都有兩個副本;一大一小。問題是我沒有任何一種鏈接來說明哪個小圖像映射到哪個大圖像。確定圖像是否相同,但尺寸不同

我大概知道哪個大圖像轉到哪個小圖像(我有一個數組,每個小圖像最多包含5個可能性),並且我想循環顯示數組,並將每個大圖像與小圖像進行比較圖像,看看它是否是相同的圖像,但調整大小。

TLDR /沒有理解:有沒有什麼簡單的方法在PHP中比較兩個圖像是相同的,一個是(比如說200x200),另一個是(比如說500x500),並確定它們是否是圖像同樣的事情?

+0

什麼是圖像格式?圖像是否保存到文件中? – vicentazo

+0

所有圖像都是JPG格式,它們保存在兩個文件夾中;大小。 – Joe

回答

2

最簡單的方式將兩者取決於你想要多少CPU使用跟蹤每個文件名的整個過程中調整到一個小尺寸(16×16或32×32的例子。

然後使用imagecolorat( )通過每行/列比較像素顏色,然後可以定義需要匹配的百分比,以便將其視爲相同的圖片。

編輯:這裏有一個這樣的例子實施http://www.thismayhem.com/php/comparing-images-with-php-gd/

+0

神奇。我以此爲基礎,不得不做一些調整,但你給了我正是我想要的;一個起點:)非常感謝。 – Joe

+0

爲什麼不按照我在答案中的建議重新創建小圖像? – middus

0

你有沒有嘗試過,如果調整的1大圖像創建與小圖像完全相同的圖像(手動使用Md5找出)。

如果是這樣,那麼你的解決方案是將更大的圖像批量調整爲tmp文件,而md5則是構建一個bigimagemd5s的數組,然後你md5更小的。

此方法僅適用於使用php GD算法生成的小圖像,並且具有與以前相同的壓縮級別和大小。

+0

即使我這樣做了,由於縮放算法,縮小的大圖像將具有不同的MD5。不幸的是,沒有一個選擇。 – Joe

+0

這就是我所說的,不需要刪除點,這是一個解決方案,它寫得很好,解決方案,它不能工作,謝謝 –

1

你可以做的一件事就是拍攝大圖片,將其縮放到小圖片的大小並檢查一些隨機像素區域。如果圖片真的不一樣,你可以使用類似avg的東西。兩幅圖像的顏色。

但這種方式實在是性能吸吮......

0

對它們進行排序手動將佔用你太多,更短的時間。

1

不,沒有same_image_but_in_different_sizes()函數返回true或false。

如果我是你,我會手動排序或選擇一種基於顏色直方圖的方法。

我剛纔看到所有的「圖像都是JPG格式,它們被保存在兩個文件夾中;大小」。你爲什麼不拋開小事重新創建它,但這次你記得哪個屬於哪個?

0

請檢查此鏈接: Compare 2 images in php

看來,使用ImageMagick擴展是你最好的選擇,儘管你可能不得不縮減較大圖像的尺寸與您的較小尺寸相同。