2009-05-03 27 views
1

私のアプリは、ビデオからフレームを読み込み(pygletを使用)、ストリップを抽出して(つまり、1〜6本のビデオラインで全幅に)、後で書き出すことができる画像に各ストリップをペーストします* .pngファイル。ピグレット画像の領域をPIL画像に配置する方法は?

問題点Pyglet GL画像はグラフィックメモリに保存されているため、サイズは非常に限られています。 私の現在の緊急の回避策は、タイルが一杯になったときに、小さなタイル(つまり、pygletのGLサイズの制限内)として、to-be pngイメージを構築し、* pngファイルに書き出し、それをPILイメージファイルを作成し、最後のPIL Image * pngファイルにタイルイメージをペースト/追加します。

ピグレット-GLストリップをPIL Image-friendlyフォーマットに変換し、それを最後のPILイメージにペースト/ペーストすることが可能であることが考えられます。したがって、タイルビジネスの必要はなく、事柄を非常に複雑にしますパフォーマンスに影響を与えます。

しかし、ストリップデータをPILイメージに貼り付けることができる形式にする方法が見つかりません。 多くのリクエストが他の方法で変換されているのを見たことがありますが、私は群れと一緒に走ったことはありません。

答えて

2

nextframe = source.get_next_video_frame()#は、最初の取得...ので、ここでそれは、私はそれが自分の質問にはお答えすることが悪い形だけど、私は他の人に有用である可能性がある答えを働きましたビデオフレーム
nextframe =なしながら:! :# "は!しばらくnextframe =なし" のEOF

# 
### extract strip data, conver to PIL Image-friendly form, paste itn into travo Image 
# 
strip = nextframe.get_region(0, (vid_frame_h//2)-(strip_h//2), strip_w, strip_h) # Extract strip from this frame 
strip_image_data = strip.get_image_data() 
strip_data = strip_image_data.get_data(strip_image_data.format, strip_image_data.pitch) 
strip_Image = Image.frombuffer("RGB", (strip_w, strip_h), strip_data) 
travo_image.paste(strip_Image, (0, travo_filled_to, strip_w, travo_filled_to + strip_h)) # paste strip image into travo_image 
travo_filled_to = travo_filled_to + strip_h  # update travo_filled pointer 
nextframe = source.get_next_video_frame()  # get next video frame (EOF returns None)  

終わりにNoneを返します