วิธีบันทึกไฟล์รูปภาพจากแหล่งที่มา


1

ฉันมีแหล่งรูปภาพต่อไปนี้ใน RTF

{\*\shppict{\pict\pngblip\pichgoal1020\picwgoal1200
89504e470d0a1a0a0000000d494844520000005000000044080200000099342577000000017352474200aece1ce90000000467414d410000b18f0bfc
6105000000097048597300000ec300000ec301c76fa8640000033449444154785eed9a4b8edc300c44fb12d96599c3e60a395aae102067e8105d6582
2e49b4d4767b6cc70f8581cc9f58fd19cc621ecfff8cdbf0d5b90d5f829f8f6f109f036b0dfbe8638a5b06860dcbc4838b4b076ec34bc84488b93370
cd5f5a09b7e1cff3f7fb0f1113bbb0b7e1aabd3d3d9fd5b0b5b818ea631bc39db72665a3ab7bf15097b193e14e3f9d35b1aca725b29f619e527acaa4
e60b0cbfb165425e59666fc30bbc63d8eec8c5ba8932929014575343c38d61c33d7e2c12c568c1afdf7faa62baa03a2a995f65c0706bfbfc4a74b918
6dbb35b1624eec8db4e22d7a0d27738752888843112a85d62dc9ed55de372c5b1e565c7762c0b00c3a976823372c3da7162d550d4b694b28cebf42e5
e7c2e3dee807a9846281d08a3b3207cc0cc78a522c9a93df5a6db716c81fed67ac8c6acd6fc51d99c3280c4b2e0a45c6d0c532c4c4c4546f3ffdf00a
eb4be3e7ea7ca31537bcd7c5c48b87e42026e754ef2883320a626eaab79f7e7885eb5da672be510d1ad20b3137a186196ee08b3af228d3cacd10c19c
98954617d38172a6215d10737368984f1dc87dc9d208c6023fdb01c2a321bd2ea603b10b488b89891a031f6920f7f9636b42acf7b31d20e92a857a27
4e33a4d8c4449bbae1a309bb46b75260626289231ab6b52462825b09422f23bdd4ffd292899f13ef2b90b2446ce826fbd3b2ca269f2b43be8d119f66
357e16b1749c370dcbf526643b49dc1a32b925560f326cd8285f7826bae9797b3bc5b66ede312c57e66f579521c3568c7a8947a1b787b5861119f29c
17c7e1c97c293331b1c42ac37c7ee1ef43026af2b238dc2bcb1644bcd8856cc2da775856b1c744490d522552e662fa45dc0762a2c6aedfe172572749
198b57c84a10737336306c6222657169237939784a91ad20e626de310c64eee24e3b1806b218c4dc1ac3860c85982bd8cd3090ad4c88af326cc85017
d3139d1b6f6818945bad35ecc86897eddaef7673c386ecb3996120d345b09488530a92540f71878d0d3bf18e9658dac14ac3865ffa29c38edfb42836
ccc9dff92170cbc70d1bbeb17beb516cdc0a1b3b6658fea7f4148a2f629761e93f9d6ec34b483fa3a7658f5f5a87e2367c756ec357e7367c756ec357
e7367c6d9ecf7fb9245ee11e01346e0000000049454e44ae426082
}}

คำถามที่ 1: สิ่งนี้ 45bad35ecc86897eddaef7673c38 รหัสถูกเรียก (เลขฐานสิบหกบางอย่าง)? คำถามที่ 2: ฉันจะบันทึกภาพพูด png จากแหล่งที่มาได้อย่างไร


อาจเป็นการเข้ารหัส base64 บางชนิดหรือคล้ายกันสำหรับการส่งไฟล์ไบนารีผ่านเส้นทางแบบข้อความเท่านั้น คุณจะได้รับมันคืออะไรมันคืออะไร?
Xen2050

มันมาจาก RTF หากฉันใส่โค้ดด้านบนด้วย {\ rtf {image code}} จะเปิดขึ้นพร้อม ms-word fine
Rahul Patel

คำตอบ:


0

จริงๆแล้วมันเป็นการแสดงเลขฐานสิบหกโดยตรงของอิมเมจ. png แบบไบนารีไม่ได้เข้ารหัสแม้แต่เบส 64 หากคุณสร้างไฟล์ชื่อ mypng.png โดยที่ไบต์แรกคือ 0x89 อันที่สองคือ 0x50 และต่อไปโดยไม่สนใจบรรทัดใหม่ในข้อความคุณควรจะสามารถเปิดและดูรูปภาพ (ในกรณีนี้มันเป็นลายเส้น)

สำหรับวิธีการแปลงมันขึ้นอยู่กับว่า

เพียงแค่ให้จุดเริ่มต้นแก่คุณเนื่องจากคุณมี Word หากคุณเปิดไฟล์ใน Word เป็นไฟล์ข้อความ (เพื่อให้คุณสามารถดูรหัส RTF แทนรูปภาพได้คุณอาจต้องตั้งค่า "ยืนยันการแปลงที่เปิด" Word ตัวเลือกในการทำเช่นนั้นเลือกไบต์ข้อมูลและเรียกใช้รหัสต่อไปนี้ (คุณจะต้องเปลี่ยนชื่อไฟล์ / เส้นทาง) คุณควรจะสามารถเปิดเอาท์พุท. png

Sub saveSelectionAsBinary()
Const pngpath As String = "c:\a\mypng.png"
Dim i As Long
Dim s As String * 1
Dim t As String
Kill pngpath
Open pngpath For Binary As 1
t = Selection.Text
i = 1
Do While i <= Len(t)
  If Mid(t, i, 1) = vbCr Then
    Debug.Print "cr"
    i = i + 1
  Else
    s = Chr(Val("&H" & Mid(t, i, 2)))
    Put #1, , s
    i = i + 2
  End If
Loop
Close #1
End Sub

ฉันคิดว่าเป็นที่ชัดเจนว่า "pngblip" บอกเราว่านี่ควรเป็นรูปภาพรูปแบบ. png แต่อาจมีรูปภาพประเภทอื่นในรูป RTF และไม่จำเป็นต้องเข้ารหัสด้วยวิธีนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.