2014-01-16 52 views
3

我想比較圖像並查找它們是否相同。圖像可以具有相同的名稱,但實際圖像可能不同。我到目前爲止的代碼。如何比較ColdFusion中的兩個圖像

<cfset dirToReadFrom = #ExpandPath('../properties-feed/unzipped/')# /> 

<cfdirectory 
action="list" 
directory="#dirToReadFrom#" 
listinfo="name" 
name="qFile" 
sort="asc" 
filter="*.jpg" 
/> 

<cfset images = ArrayNew(1)> 
<cfoutput query="qFile"> 
    <cfset ArrayAppend(images, #qFile.name#)> 
</cfoutput> 

<cfset dirToCreate = #ExpandPath('./assets/images/resized/original/')# /> 
<cfif not DirectoryExists(dirToCreate)> 
    <cfdirectory action = "create" directory = "#dirToCreate#" /> 
    <cfoutput><p>Your directory has been created.</p></cfoutput> 
</cfif> 
<cfzip 
action="unzip" 
file="#ExpandPath('../properties-feed/data.zip/')#" 
destination="#ExpandPath('./assets/images/resized/original/')#" 
overwrite="true" 
/> 

<cfset dirToReadFromOriginal = #ExpandPath('./assets/images/resized/original/')# /> 

<cfdirectory 
action="list" 
directory="#dirToReadFromOriginal#" 
listinfo="name" 
name="qFileOriginal" 
sort="asc" 
filter="*.jpg" 
/> 
<cfset imagesLatest = ArrayNew(1)> 
<cfoutput query="qFileOriginal"> 
    <cfset ArrayAppend(imagesLatest, #qFileOriginal.name#)> 
</cfoutput> 

<!--- Loop over your current images ---> 
<cfloop query="qFileOriginal"> 
    <!--- Check for a matching file name ---> 
    <cfquery name="fileExists" dbtype="query"> 
     SELECT 
      COUNT(*) AS num_Rec 
     FROM 
      qfile 
     WHERE 
      name = <cfqueryparam cfsqltype="cf_sql_varchar" value="#qFileOriginal.name#" /> 
    </cfquery> 

    <!--- do we have a matching file name? ---> 
    <cfif val(fileExists.num_rec)> 
     <cfimage action="read" name="newImage" source="#dirToReadFrom##qFile.name#"/> 
     <cfimage action="read" name="originalImage" source="#dirToReadFromOriginal##qFileOriginal.name#"/> 

     <cfset newImageBlob = ImageGetBlob(newImage) /> 
     <cfset originalImageBlob = ImageGetBlob(originalImage) />  

     <!--- Compare ---> 
     <cfif toString(newImageBlob) eq toString(originalImageBlob) > 
      Images are same 
      <cfelse> 
      DIFFERENT 
     </cfif>  

    </cfif> 

</cfloop> 

該代碼似乎沒有工作。任何人都可以看到我做錯了什麼?

更新1 從評論

我居然得到的結果是,第一印象是相同的,圖像的文件其餘的都是不同的。但這是不正確的,因爲我比較的大多數圖像都是相同的。

更新2 從評論

它不正確地標識相同的圖像作爲是不同的。我實際得到的是前兩張圖像是相同的,其餘的是不同的。這是不正確的,因爲我擁有的大多數圖像都是相同的。

+0

我實際得到的結果是,第一個圖像是相同的,其餘的文件中的圖像是不同的。但這是不正確的,因爲我比較的大多數圖像都是相同的。 – Roman

+0

定義「似乎沒有工作」 - 它的錯誤,它不正確地識別不同的圖像是相同的,或者它不正確地識別相同的圖像是不同的? – duncan

+0

它錯誤地將相同的圖像標識爲不同。我實際得到的是前兩張圖像是相同的,其餘的是不同的。這是不正確的,因爲我擁有的大部分圖像都是一樣的。 – Roman

回答

1

我一直只用BinaryEncode()來完成這個工作,然後比較結果字符串。你必須小心,雖然壓縮可以使文件不同,即使他們看起來(眼睛)完全一樣。