开发者社区> 问答> 正文

复制枕头Gif到windows剪贴板

我已经创建了一个gif使用枕头从一些图像和我试图复制这个gif存储为一个BytesIO对象剪贴板保存到一个gif图像的演示。下面的代码;其中imageList =[]是一个图像文件名列表。 从python中复制gif到剪贴板的任何方法都有帮助吗?谢谢

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()

问题来源StackOverflow 地址:/questions/59380396/copy-pillow-gif-to-windows-clipboard

展开
收起
kun坤 2019-12-28 14:21:25 727 0
1 条回答
写回答
取消 提交回答
  • 试一试:

    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_())
    
    2019-12-28 14:21:32
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《云服务器运维之Windows篇》 立即下载
TAKING WINDOWS 10 KERNEL 立即下载
ECS运维指南之Windows系统诊断 立即下载