LevelUp! Studio » Base64 https://blog.levelup.in.th Experience the new world. Fri, 26 May 2017 10:06:07 +0000 th hourly 1 http://wordpress.org/?v=3.8.1 การเช็คข้อมูล base64 ที่ถูกแปลงมาจากรูป https://blog.levelup.in.th/2012/05/31/check-bitmapimage-from-base64-string/ https://blog.levelup.in.th/2012/05/31/check-bitmapimage-from-base64-string/#comments Thu, 31 May 2012 10:58:16 +0000 http://blog.levelup.in.th/?p=1846 ในการส่งข้อมูลรูปไปให้ php เราต้องทำการแปลงข้อมูลก่อนโดยทาง php ของผมรับข้อมูลเป็นรูปแบบ base64 เพื่อไป decode โดยถ้าเป็นข้อมูล String ต่างๆเรายังดักเช็คก่อนทำการส่งได้ แต่ในที่นี้เป็นรูปเราจำเป็นต้องสร้าง BitmapImage และใช้เป็น ImageSnapshot ก่อนถึงจะส่งค่าได้ การเช็ครูปภาพของเราจึงต้องมีการใช้ตัวช่วยครับ

  • ขั้นแรก เราก็ทำการดักข้อมูลที่แปลงแล้วของเราก่อน โดย debug break หรือ trace ก็ได้แต่ต้องนำมาให้ครบ ไม่งั้นจะพังเอานะครับ
  • ข้อมูลรูปที่ถูก encode มาอยู่ในรูปแบบของ String

    ข้อมูลรูปที่ถูก encode มาอยู่ในรูปแบบของ String

  • ต่อไปเราก็Copyข้อมูลนั้นมาใช้ในลิ้งค์นี่ครับ base64-decoder-encoder
  • จากนั้นก็ทำการตั้งค่าต่างๆ ดังนี้ครับ
    1. - Paste ข้อมูลที่เป็น String ที่เราได้ดักมาลงใน Textbox เลยครับ
      - What to do with the source data เลือกเป็น decode
      - Output data เลือกเป็น export to a binary file, filename: เลือกใส่ชื่อไฟล์เลยครับเนื่องด้วย default ของมันเป็น .txt เราก็เปลีย่นเป็นชื่อรูป+จุด+นามสกุลไฟล์ของเราได้เลยตามรูปครับ

    64_2
    64_3

      จากนั้นกด Convert the source data เว็ปเบราเซอร์ของเราก็จะทำการเซฟรูปมาให้ครับ

    64_4

    ไฟล์ที่ได้

    ไฟล์ที่ได้

    เท่านี้เราจะตรวจสอบข้อมูลรูปที่เราจะส่งให้ php ได้แล้วล่ะครับ

    ]]>
    https://blog.levelup.in.th/2012/05/31/check-bitmapimage-from-base64-string/feed/ 0
    gzip ระหว่าง as3 + php https://blog.levelup.in.th/2009/11/30/gzip-in-as3-phpgzip-%e0%b8%a3%e0%b8%b0%e0%b8%ab%e0%b8%a7%e0%b9%88%e0%b8%b2%e0%b8%87-as3-php/ https://blog.levelup.in.th/2009/11/30/gzip-in-as3-phpgzip-%e0%b8%a3%e0%b8%b0%e0%b8%ab%e0%b8%a7%e0%b9%88%e0%b8%b2%e0%b8%87-as3-php/#comments Mon, 30 Nov 2009 08:14:13 +0000 http://blog.levelup.in.th/?p=279 อันนี้ก็มาจากการพยายามลดขนาดข้อมูลที่ต้องส่งไปมาระหว่าง Php กับ Flash ซึ่งเป็น Text ล้วนๆ ซึ่งก็ใหญ่ไม่ใช่เล่นเหมือนกัน

    เลยพยายามลองใช้ gzip ที่มีติดอยู่กับ php เป็น default อยู่แล้ว

    ประเด็นคือ gzip ของ php มี function เยอะมากมาย ประมาณ 3-4 แบบได้

    ส่วน as3 ก็ไม่รู้ว่ามีหรือเปล่า ต้องหาอะไรเพิ่มมั้ย ก็เลยต้องศึกษาเพิ่มกันหน่อย

    หลังจากวิจัยมาเกือบวัน ก็สรุปได้ผลตามนี้

    PHP

    หลังจากลองผิดลองถูกอยู่ซักพักก็ได้ โค้ดมาประมาณนี้

    $log_zip = base64_encode(gzcompress(json_encode($log),5));

    - แปลง Object เป็น Json ก่อนเพื่อความสะดวกในการใช้งาน

    - gzip ด้วย gzcompress ระดับเท่าไหรก็แล้วแต่ เท่าที่ลองประมาณ 5 กำลังดี ทั้งเวลาและขนาด

    - สุดท้ายเข้ารหัสเป็น Base64 เพื่อจะได้ส่งทาง Flashvar ได้

    โดยส่งไปทาง FlashVars แบบนี้

    <object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″

    width=”600″ height=”450″

    codebase=”http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab” style=”visibility: visible;”>

    <param name=”movie” value=”assets/flash/battle.swf” />

    <param name=”quality” value=”high” />

    <param name=”bgcolor” value=”#869ca7″ />

    <param name=”wmode” value=”transparent” />

    <param name=”allowScriptAccess” value=”sameDomain” />

    <param name=”flashVars” value=”&log=<?=$log_zip?>” />

    <embed src=”assets/flash/battle.swf” quality=”high” bgcolor=”#869ca7″ wmode=”transparent”

    width=”600″ height=”450″ name=”flashBattle” align=”middle”

    play=”true”

    loop=”false”

    quality=”high”battle_result

    allowScriptAccess=”sameDomain”

    flashVars=”&log=<?=$log_zip?>

    type=”application/x-shockwave-flash”

    pluginspage=”http://www.adobe.com/go/getflashplayer”>

    </embed>

    </object>

    - ตัวแปล log_zip ส่งไปทาง FlashVars

    AS3

    หลังจากโง่งมหาอยู่นาน ปรากฏว่ามันมีอยู่แล้ว แต่ search แล้วดันเจอแต่ library เก่าๆ!

    โค้ดก็ประมาณนี้หล่ะ เธอว์

    var log_zip:String = root.loaderInfo.parameters.log;

    var b64:Base64Decoder = new Base64Decoder();

    log_zip = log_zip.replace(/ /g,”+”);

    b64.decode(log_zip);

    var ba:ByteArray = b64.flush();

    ba.uncompress();

    var log_text:String = ba.toString();

    log = new JSONDecoder(log_text).getValue();

    - ต้องมี Base64Decoder จาก as3lib ด้วย ไปหาโหลดเพิ่มเอา

    - ที่เจ็บปวดคือส่งผ่าน FlashVar แล้วมันดันแปลง + เป็น space ให้ตามประสา urlencode! หาเป็นชั่วโมง!

    - สุดท้ายก็แกะ Json ด้วย JSONDecoder (as3lib เหมือนกัน)

    ผลจากการ gZip

    ขนาดลดลงอย่างเห็นได้ชัดทีเดียว

    เดิม = 8167 ตัวอักษร

    gzip = 524 ตัวอักษร

    ประหยัดไปเกือบๆ 20 เท่าทีเดียวเชียว

    ]]>
    https://blog.levelup.in.th/2009/11/30/gzip-in-as3-phpgzip-%e0%b8%a3%e0%b8%b0%e0%b8%ab%e0%b8%a7%e0%b9%88%e0%b8%b2%e0%b8%87-as3-php/feed/ 0