繁体   English   中英

将枕头 Gif 复制到 Windows 剪贴板

[英]Copy Pillow Gif to windows Clipboard

我已经使用一些图像中的枕头创建了一个 gif,我正在尝试将此作为 BytesIO 对象存储的 gif 复制到剪贴板,以作为 gif 图像保存到演示文稿中。 代码如下; 其中 imageList = [] 是图像文件名的列表。

任何将 gif 从 python 复制到剪贴板的方法都会有帮助吗?! 谢谢

def copyGif(self):
    imageList = []

    gif = BytesIO()
    imageList[0].save(gif, format='GIF', save_all=True, append_images=imageList[1:], optimize=False, duration=1000,
                      loop=0)

    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardData(win32clipboard.CF_DIB, gif.getvalue())
    win32clipboard.CloseClipboard()

尝试一下:

import sys
from PyQt5.Qt import * 


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setGeometry(50, 50, 600, 600)

        # Create a URL.
        url1 = QUrl.fromLocalFile('Loader.gif')
        url2 = QUrl.fromLocalFile('animated-dancing-image-0028.gif')

        # Create MIME data with URL.
        mime_data = QMimeData()
        mime_data.setUrls([url1, url2])

        self.labelList = [ i for i in range(len([url1, url2]))]

        # Copy the MIME data to the clipboard.
        clipboard = QApplication.clipboard()
        clipboard.setMimeData(mime_data)

        cm = clipboard.mimeData()

        for i, m in enumerate(cm.urls()):
            self.labelList[i] = QMovie(m.toLocalFile())
            self.labelList[i].frameChanged.connect(self.repaint)
            self.labelList[i].start()

    def paintEvent(self, event):
        currentFrame1 = self.labelList[0].currentPixmap()
        currentFrame2 = self.labelList[1].currentPixmap()

        frameRect2 = currentFrame2.rect()
        frameRect2.moveCenter(self.rect().center())
        if frameRect2.intersects(event.rect()):
            painter = QPainter(self)
            painter.drawPixmap(frameRect2.left(), frameRect2.top(), currentFrame2)

        frameRect1 = currentFrame1.rect()
        frameRect1.moveCenter(self.rect().center())
        if frameRect1.intersects(event.rect()):
            painter.drawPixmap(frameRect1.left(), frameRect1.top(), currentFrame1)            


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MainWindow()
    ex.show()

    QTimer.singleShot(10000, app.quit)

    sys.exit(app.exec_())

在此处输入图片说明

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM