返回顶部

收藏

使用libvirt抓取linux kvm虚拟机的缩略图

更多
import libvirt
import os
import uuid
try:
    from PIL import Image
    print("PIL")
except ImportError:
    import Image
def handler(stream, buf, opaque):
    fd = opaque
    os.write(fd, buf)
THUMBNAIL_SIZE =(256, 256)
thumbnail = '/home/hcc/test/screenshot/test-' + str(uuid.uuid4())
command = "touch " + thumbnail
print(command)
os.system(command)
fd = os.open(thumbnail, os.O_WRONLY | os.O_TRUNC | os.O_CREAT, 0644)
try:
    conn = libvirt.open('qemu:///system')
    d1 = conn.lookupByName('test')
    print(d1.info())
    print(d1.name())
    stream = conn.newStream(0)
    d1.screenshot(stream, 0, 0)
    stream.recvAll(handler, fd)
    if os.path.getsize(thumbnail) == 0:
        image = Image.new("RGB", THUMBNAIL_SIZE, 'black')
        image.save(thumbnail)
    else:
        print("else")
        im = Image.open(thumbnail)
        im.thumbnail(THUMBNAIL_SIZE)
        im.save(thumbnail,'PNG')
except libvirt.libvirtError:
    try:
        stream.abor()
    except:
        pass
else:
    stream.finish()
finally:
    os.close(fd)

标签:python

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. 博主 发表 2017-06-04 16:00:00 Python 基础 05-函数
  2. 博主 发表 2017-06-05 16:00:00 Python 基础 06-模块
  3. 博主 发表 2017-06-06 16:00:00 Python 基础 07-高级数据类型
  4. 博主 发表 2017-06-07 16:00:00 Python 基础 08-类和对象
  5. 博主 发表 2017-06-08 16:00:00 Python 基础 09-文件处理
  6. 博主 发表 2017-06-09 16:00:00 Python 基础 10-异常处理
  7. 博主 发表 2017-06-10 16:00:00 Python 基础 11-Python 技术领域
  8. 博主 发表 2017-08-31 16:00:00 CentOS 下安装 Python 3.X/PIP/Git 2.X
  9. 博主 发表 2017-09-17 10:24:24 详解Python中的下划线(原创)
  10. 博主 发表 2017-09-19 06:23:42 Python集合(set)类型的操作
  11. jameslz 发表 2017-09-30 06:53:48 Linux 平台轻松解决Python3环境: conda
  12. 博主 发表 2017-09-19 23:15:00 搭建python数据分析平台

发表评论