2012-11-01 41 views
0

我在這裏有一個問題,確定使用哪種方法來顯示從XML發送的圖像。我收到下面的XML響應: -從XML響應圖像轉換

<?xml version="1.0" encoding="UTF-8"?> 
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header> 
     <i18n:international xmlns:i18n="http://www.w3.org/2005/09/ws-i18n"> 
     <i18n:locale>en_US</i18n:locale></i18n:international> 
    </soapenv:Header> 
    <soapenv:Body> 
    <get:GetCustAreaSnapshotResponseParam xmlns:get="http://tnb.com.my/CGIS/D/getcustareasnapshotcon"> 
    <ResponseHdr> 
    <ns2:ResponseId xmlns:ns2="http://www.tnb.com.my/CGIS/schemas/bsmfpro" xmlns:ns1="http://tnb.com.my/CGIS/D/getcustareasnapshotpro">02946A91565A40210000013AB9B58E97</ns2:ResponseId> 
    <ns2:ResTransactionId xmlns:ns2="http://www.tnb.com.my/CGIS/schemas/bsmfpro" xmlns:ns1="http://tnb.com.my/CGIS/D/getcustareasnapshotpro">111112100334570</ns2:ResTransactionId> 
    <ns2:ProviderId xmlns:ns2="http://www.tnb.com.my/CGIS/schemas/bsmfpro" xmlns:ns1="http://tnb.com.my/CGIS/D/getcustareasnapshotpro">CGIS</ns2:ProviderId> 
    <ns2:ResTimestamp xmlns:ns2="http://www.tnb.com.my/CGIS/schemas/bsmfpro" xmlns:ns1="http://tnb.com.my/CGIS/D/getcustareasnapshotpro">2012-11-01T10:03:34.000+08:00</ns2:ResTimestamp> 
    <ns2:ResStatus xmlns:ns2="http://www.tnb.com.my/CGIS/schemas/bsmfpro" xmlns:ns1="http://tnb.com.my/CGIS/D/getcustareasnapshotpro">SUCC</ns2:ResStatus> 
    <ns2:MsgCode xmlns:ns2="http://www.tnb.com.my/CGIS/schemas/bsmfpro" xmlns:ns1="http://tnb.com.my/CGIS/D/getcustareasnapshotpro">IM-001</ns2:MsgCode> 
    <ns2:MsgDesc xmlns:ns2="http://www.tnb.com.my/CGIS/schemas/bsmfpro" xmlns:ns1="http://tnb.com.my/CGIS/D/getcustareasnapshotpro">Map Data Successfully Return to external Systems.</ns2:MsgDesc> 
    </ResponseHdr> 
    <ResGetCustAreaSnapshot> 
     <cmc:GetCustAreaSnapshot xmlns:cmc="http://tnb.com.my/CGIS/D/cmc_customermgnt"> 
       <cmc:MAP_IMAGE_ZOOM1000>iVBORw0KGgoAAAANSUhEUgAAAaQAAAGkCAYAAAB+TFE1AAAQJUlEQVR4nO3d3XbbthZGUbgj7w==</cmc:MAP_IMAGE_ZOOM1000> 
       <cmc:MAP_IMAGE_ZOOM2000>iVBORw0KGgoAAAANSUhEUgAAAaQAAAGkCAYAAAB+TFE1AAAHoElEQVR4nO3d3XKaUBhA0UMn7w==</cmc:MAP_IMAGE_ZOOM2000> 
       <cmc:MAP_IMAGE_ZOOM4000>iVBORw0KGgoAAAANSUhEUgAAAaQAAAGkCAYAAAB+TFE1AAAHCklEQVR4nO3dya6bMABAUVPl</cmc:MAP_IMAGE_ZOOM4000> 
     </cmc:GetCustAreaSnapshot> 
    </ResGetCustAreaSnapshot> 
    </get:GetCustAreaSnapshotResponseParam> 

我應該把解壓出來MAP_IMAGE_ZOOM然後使用BASE64_DECODE。當我解碼字符串時,我收到以下結果:#

‰PNG IHDR¤¤~LQ5%IDATxœíÝÝvÛ¶FQ¸#ï 

這是什麼類型的編碼?我想如何將它顯示爲圖像?我曾嘗試過:

file_put_contents('test4000.png', base64_decode($bin)); 

但顯示的圖像只是空白。

我也試過以下,也收到了空白圖像:

$img = html_entity_decode(base64_decode($bin), ENT_COMPAT,'ISO-8859-1'); 
Header("Content-Type: image/png"); 
die($img); 

將不勝感激給予任何幫助。

感謝

+0

如果將解碼後的字符串打印爲十六進制字節而不是文本,將會更有助於弄清楚發生了什麼。 – DarenW

回答

1

這是PNG文件,與IHDR塊和IDAT塊。這些在http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html中有描述,另見上一頁,http://www.libpng.org/pub/png/spec/1.2/PNG-Structure.html整體PNG結構。

IHDR內容告訴我這是一個420x420的圖像,RGBA三元組(彩色,帶透明度)深8位。

IDAT是可疑的短,但也許圖像是一個顏色與一個微小的扭曲某處,或一個非常簡單的圖像。我用Python玩弄了base64字符串,並將解碼後的數據保存爲PNG文件。圖像閱讀應用程序告訴我「閱讀錯誤」或「無法加載圖像」,因此您的IDAT可能很糟糕,或者使用典型圖像閱讀器未知的壓縮算法。

+0

謝謝!最後終於找到了......這只是一個不好的數據,就像你說的那樣,IDAT是可疑的短。 –