gif --- การบันทึก GIF

โมดูล gif ใช้สำหรับการบันทึก GIF

class Gif -- เครื่องบันทึก Gif

คุณสามารถใช้โมดูล gif เพื่อบันทึกคลิปวิดีโอสั้นได้ โปรดทราบว่าไฟล์ gif บันทึกข้อมูลภาพแบบไม่บีบอัด ดังนั้นจึงเหมาะสมที่สุดสำหรับการบันทึกคลิปวิดีโอสั้นที่ต้องการแชร์ ใช้ mjpeg สำหรับคลิปยาว

ตัวอย่างการใช้งาน:

import csi
import gif
import time

# Setup camera.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000)

# Create the gif object.
g = gif.Gif("example.gif")

# Record for 4 seconds.
start = time.ticks_ms()
while time.ticks_diff(time.ticks_ms(), start) < 4000:
    g.add_frame(csi0.snapshot())

# Finalize.
g.close()
class gif.Gif(filename: str, width: int | None = None, height: int | None = None, color: bool | None = None, loop: bool = True)

สร้างออบเจ็กต์ Gif ที่สามารถเพิ่มเฟรมได้ filename คือเส้นทางสำหรับบันทึก GIF

width ค่าเริ่มต้นเป็นความละเอียดแนวนอนของบัฟเฟอร์เฟรมหลัก

height ค่าเริ่มต้นเป็นความละเอียดแนวตั้งของบัฟเฟอร์เฟรมหลัก

color ค่าเริ่มต้นตามโหมดสีของบัฟเฟอร์เฟรมหลัก:

  • False จะสร้าง gif แบบ sensor.GRAYSCALE 7 บิตต่อพิกเซล

  • True จะสร้าง gif แบบ sensor.RGB565 7 บิตต่อพิกเซล

loop เมื่อเป็น True จะทำให้ gif วนซ้ำโดยอัตโนมัติระหว่างเล่น

width() int

คืนค่าความกว้าง (ความละเอียดแนวนอน) ของ gif

height() int

คืนค่าความสูง (ความละเอียดแนวตั้ง) ของ gif

format() int

คืนค่า sensor.RGB565 ถ้า color เป็น True หรือ sensor.GRAYSCALE ในกรณีอื่น

size() int

คืนค่าขนาดไฟล์ของ gif จนถึงปัจจุบัน ค่านี้จะอัปเดตหลังจากเพิ่มเฟรม

loop() bool

คืนค่าว่าออบเจ็กต์ gif ถูกสร้างด้วย loop เปิดใช้งานหรือไม่

add_frame(image: image.Image, delay: int = 10) None

เพิ่มภาพลงในการบันทึก gif ความกว้าง ความสูง และโหมดสีของภาพต้องตรงกับค่าที่ใช้ในตัวสร้าง

delay คือจำนวนเซนติวินาทีที่รอก่อนแสดงเฟรมนี้หลังจากเฟรมก่อนหน้า

close() None

สรุปการบันทึก gif ต้องเรียกเมธอดนี้ครั้งเดียวเมื่อการบันทึกเสร็จสิ้น เพื่อให้ไฟล์สามารถดูได้