Sufficiency Economy
Group Blog
 
All blogs
 

Python อ่าน และการเขียนข้อมูลลงใน binary file

สืบเนื่องจากต้องการแปลเกม จึงจำเป็นต้องแก้ไข binary file ตอนแรกนึกว่าง่ายๆ คล้ายๆกับการอ่าน text file แต่มันไม่เหมือนส่ะทีเดียว เมื่อไปค้นใน google ก็พบวิธีทำดังนี้

กรณี1 เขียนข้อมูล 1 byte ลงไปใน binary file เริ่มจาก ...
fp = open("test1.smc","r+b") เปิดไฟล์แบบอ่านและเขียน
fp.seek(0x17,0) เลื่อนไปตำแหน่งที่ต้องการจากจุดเริ่มต้น
fp.write("x5F") ก็จะเขียนค่า 0x5F ลงไปที่ตำแหน่งนั้น
fp.close() แล้วก็ปิดไฟล์ส่ะ

กรณี2 ถ้าข้อมูลเยอะ ทำไงดี ก็...
import binascii
hb = binascii.a2b_hex("ABCAA1234B") เพื่อแปลงค่าก่อน และก็ทำเดิมคือ
fp.write(hb)
ก็เรียบร้อย ^ ^




 

Create Date : 03 ตุลาคม 2555    
Last Update : 3 ตุลาคม 2555 19:37:17 น.
Counter : 1717 Pageviews.  

ตัวอย่างการ load ไฟล์ จาก web mangareader.net

ที่จริงได้อธิบายวิธีการไปแล้ว แต่การปรับให้ load การ์ตูนเรื่องอื่นๆ ต้องแก้ code อย่างไร มีคนอยากรู้ ?? ^ ^

เลยขออธิบายอีกครั้ง

1. สร้างไฟล์ fileList01.txt สำหรับเก็บ link ทั้งหมดของการ์ตูนเรื่องนั้นๆ โดยใช้โปรแกรมcollectLink01.py โดยจุดที่ต้องปรับเปลี่ยนคือ

1.1 #url = "//www.mangareader.net/105/dragon-ball.html"
      url = "//www.mangareader.net/207/hunter-x-hunter.html"

1.2 #startFromLine = 157
      startFromLine = 150 ตัวเลข 150 คือ เลขบรรทัด ก่อนจะมี link ถ้าขี้เกียจก็กำหนดเป็น 20 ก็ได้

1.3  #if "dragon-ball" in line:
       if "hunter-x-hunter/chapter" in line:

อันนี้ต้องเก่งหน่อย คือหาลักษณะเฉพาะของ link ได้อะไร เพื่อจะได้เลือกบรรทัดได้ถูกต้อง

แล้วก็ทำการ run program จะได้ file ชื่อ fileList01.txt ซึ่งรวบรวม linkทั้งหมด

2. หาว่าแต่ละ chapter มีกี่หน้า และเก็บในรูปแบบ 10:20 แปลว่า chapter 10 มี 20 หน้า โดย run โปรแกรม collectLink02.py

3. โปรแกรมหลัก loadFileVer3.py ก็แก้ไขนิดหน่อยคือ

3.1    #url = ListCh[0] + "-" + ListCh[1] + "-" + str(num)+"/dragon-ball/chapter-" + List[0] + ".html"
         url = ListCh[0] + "-" + ListCh[1] + "-" + str(num)+"/hunter-x-hunter/chapter-" + List[0] + ".html"

ดูเองว่าต้องแก้ไขตรงไหน

3.2    #filename = "DragonBall-chapter" + List[0] +"-"+str(num)+".png"
         filename = "HxH-chapter" + List[0] +"-"+str(num)+".png"

กำหนดชื่อ file ที่จะเก็บ

3.3 #L1 = Label(tk, text="Dragonball ระบุ chapter ที่ต้องการ download มีค่า 1 ถึง 520 ", justify = LEFT)
L1 = Label(tk, text="Hunter x Hunter ระบุ chapter ที่ต้องการ download มีค่า 1 ถึง 310 ", justify = LEFT)

อันนี้ไม่มีอะไรมา แค่บอก จำนวน chapter ให้ถูกต้องเท่านั้น

บรรทัดที่มีเครื่องหมาย # หมายถึง comment  บรรทัดนั้นจะไม่ run เน้อ ^ ^

และตัวอย่างนี้เป็นของ การ์ตูนเรื่อง hunter x hunter

file โปรแกรม load ที่นี้ หรือใน blog เก่าๆ




 

Create Date : 04 กันยายน 2555    
Last Update : 4 กันยายน 2555 20:36:00 น.
Counter : 1390 Pageviews.  

python: OpenCV สร้างภาพสีขาวดำ grayscale

วิธีสร้างภาพสีขาวดำสามารถทำได้ง่าย โดยให้ใส่ parameter
cv.CV_LOAD_IMAGE_GRAYSCALE ขณะ LoadImage









 

Create Date : 19 พฤษภาคม 2555    
Last Update : 19 พฤษภาคม 2555 20:30:38 น.
Counter : 1577 Pageviews.  

python: OpenCV Crop ภาพ

ต่อไปก็วิธี ตัดภาพ (crop)
import cv
im = cv.LoadImage("robot.jpg") Load ภาพมาเก็บในตัวแปร im
cv.SetImageROI เพื่อเลือกภาพเฉพาะส่วนที่สนใจ ROI = Region Of Interest โดยมีตัวแปร คือ ภาพ และส่วนที่ต้องการ (Left, Top, width,height) ในที่นี้คือ (150,50,200,200) คือสี่เหลี่ยมขนาด200x200 โดยอยู่ห่างจากทางซ้ายไป 150 pixel และอยู่ห่างจากด้านบน 50 pixel
ต่อไปก็สร้างพื้นที่สำหรับเก็บภาพ ด้วยคำสั่ง cv.CreateImage
และก็ copy มาใส่ ก็ ได้ผลตามต้องการ








 

Create Date : 17 พฤษภาคม 2555    
Last Update : 17 พฤษภาคม 2555 19:55:58 น.
Counter : 1368 Pageviews.  

Python: OpenCV ทำภาพ Smooth

ต่อไปก็ทำภาพให้ blur ด้วย  Gaussian blur

ก็ทำคล้ายเดิม แต่เมื่อได้ภาพมาแล้วให้เพิ่มคำสั่ง

out_im = cv.CreateImage( cv.GetSize(im), cv.IPL_DEPTH_8U, 3 )

เพื่อสร้าง ที่เก็บภาพหลังการ smooth แล้ว

cv.IPL_DEPTH_8U หมายถึง  uint8
cv.IPL_DEPTH_8S หมายถึง int8
cv.IPL_DEPTH_32F หมายถึง float32 เป็นต้น

ต่อไปก็

cv.Smooth(im,out_im,cv.CV_GAUSSIAN,11,11)

แล้วก็เอาภาพ out_im มาแสดง

cv.ShowImage("Show Blur",out_im)

ผลลัพธ์ ก็เป็นตามนี้


       




 

Create Date : 13 พฤษภาคม 2555    
Last Update : 13 พฤษภาคม 2555 19:25:20 น.
Counter : 1022 Pageviews.  

1  2  3  4  5  6  

wink99_th
Location :
พิษณุโลก Thailand

[Profile ทั้งหมด]

ให้ทิปเจ้าของ Blog [?]
ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 8 คน [?]




New Comments
Friends' blogs
[Add wink99_th's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.