Javascript Hex String เป็นรูปภาพ

ฉันจะตัดสิทธิ์ในการไล่ล่า ตอนนี้ฉันกำลังพัฒนาแอปพลิเคชันบนเว็บ มีสถาปัตยกรรมที่ใช้ PHP REST ซึ่งให้บริการเอกสาร XML คุณลักษณะของเอกสารเหล่านี้จำนวนมากเป็นสตริงรูปภาพที่เข้ารหัสเลขฐานสิบหก

ในฝั่งไคลเอ็นต์ jQuery AJAX ดึงเอกสาร XML พร้อมรูปภาพอยู่ ฉันจำเป็นต้องแสดงรูปภาพดังกล่าวในแท็ก ‹img› บางแท็ก อย่างไรก็ตามฉันยังขาดความรู้เกี่ยวกับวิธีการดังกล่าว ดังนั้นฉันจึงขอความช่วยเหลือ

เป้าหมาย: ตัวแปรสตริง JavaScript ในรูปแบบ hex หรือ base64 >>> รูปภาพที่แสดง HTML

จำเป็นต้องมีเบราว์เซอร์ข้ามหรือแฮ็กสำหรับเบราว์เซอร์ที่ไม่รองรับก็ไม่เป็นไร

ขอบคุณ กุนนาร์


person Gunnar Hoffman    schedule 09.06.2010    source แหล่งที่มา
comment
เรียน @Gunnar Hoffman โปรดดูคำถามของฉัน: stackoverflow.com/questions/34963963/   -  person Hosein Aqajani    schedule 25.01.2016


คำตอบ (2)


เข้ารหัสรูปภาพโดยใช้ base64 และเขียนลงในสตริง CDATA ลงใน XML ของคุณด้วยรูปแบบนี้:

data:[<MIME-type>][;charset="<encoding>"][;base64],0123456789abcdefg...

เมื่อสร้างเอกสารของคุณ ให้ใช้สตริงนี้เป็น src ของคุณ

<img src="data:image/png;base64,0123456789abcdefg..." />
person Andrew    schedule 09.06.2010
comment
มันทำ อาจใช้งานไม่ได้ในบางแอปพลิเคชัน แต่แอปพลิเคชันบนเว็บไม่น่าจะมีปัญหา ให้มันวน ใช้งานง่ายมาก - person Andrew; 10.06.2010
comment
คุณ แน่ใจ ว่า IE รองรับข้อมูล: URL หรือไม่ ทุกสิ่งที่ฉันได้อ่านมาบ่งบอกว่า IE รองรับบางสิ่งที่คล้ายกัน แต่แตกต่างอย่างแน่นอน - person Pointy; 10.06.2010
comment
ขอบคุณสำหรับการตอบกลับอย่างรวดเร็วของคุณ ฉันได้ลองทำตามคำแนะนำของคุณแล้วเพราะมันตรงกับสิ่งที่ฉันมีในใจใกล้เคียงที่สุด แต่การใช้งานของฉันล้มเหลว คุณสามารถเลือกข้อผิดพลาดของฉันได้ไหม var hexString = FFD8FFE000104A...; document.getElementById(output).innerHTML = รูปภาพ: ‹img src=\data:image/jpeg;hex, + hexString + \› - person Gunnar Hoffman; 10.06.2010
comment
ฉันควรชี้แจงด้วยว่าข้ามเบราว์เซอร์ฉันหมายถึงเวอร์ชันใหม่ล่าสุด เนื่องจากธรรมชาติของฐานผู้ใช้ของฉัน ฉันจึงสามารถรับประกันได้ว่าพวกเขามีซอฟต์แวร์ดังกล่าว - person Gunnar Hoffman; 10.06.2010
comment
เรียน @Andrew โปรดดูคำถามของฉัน: stackoverflow.com/questions/34963963/ - person Hosein Aqajani; 23.01.2016

เป็นไปได้ไหมที่จะใช้ไฟล์ php เพียงเพื่อแสดงภาพ? ไฟล์ php นั้นสามารถเขียนค่าที่เข้ารหัส base64 บางค่าผ่านทาง

echo base64_decode($_GET['data']); 

ในขณะที่คุณฝังภาพเช่น

<img src="http://host/yourPhpFileForDecode.php?data=base64encoded.../>
person Tobias Reithmeier    schedule 09.06.2010
comment
ส่วนหัวการตอบกลับจะต้องระบุด้วยว่ารูปภาพอยู่ในรูปแบบใด (เช่น gif, jpg, PNG) - person Ken Browning; 10.06.2010
comment
โปรดทราบว่าความยาว URL นั้นจำกัดอยู่ที่ ~2KB .. ดังนั้นจึงมีข้อจำกัดใหญ่เกี่ยวกับสิ่งที่คุณส่งผ่าน URL ได้ .. - person Gabriele Petrioli; 10.06.2010
comment
ฉันคิดว่าอย่างนั้นใช่ แต่คุณสามารถส่งผ่านไปยังไฟล์ php ผ่าน GET ได้เช่นกัน และตั้งค่ามันแบบไดนามิก - person Tobias Reithmeier; 10.06.2010
comment
@Gaby: คุณพูดถูก เพื่อให้โซลูชันนี้ซับซ้อนยิ่งขึ้น (และฉันค่อนข้างแน่ใจว่าไม่มีวิธีแก้ปัญหาที่ง่าย เนื่องจาก data: way ใช้งานไม่ได้เช่น ‹ 8 และจำกัดไว้ที่ 32kb, afaik) คุณสามารถสร้างคำขอโพสต์ ajax ได้ ไปยังไฟล์ php ซึ่งอัปเดตรูปภาพ/div ของคุณ - person Tobias Reithmeier; 10.06.2010
comment
ย่อมเป็นไปได้มากกว่านั้น ฟังดูเป็นแนวคิดที่น่าสนใจครับ :) - person Gabriele Petrioli; 10.06.2010