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 ต้องเรียกเมธอดนี้ครั้งเดียวเมื่อการบันทึกเสร็จสิ้น เพื่อให้ไฟล์สามารถดูได้