43312


pyqtでQPixmapで読み取った画像を、選んだフォルダー内に保存したいです。下は試しに書いてみたコードです。

[code]

    import sys
    from PyQt5.QtWidgets import *
    from PyQt5 import QtGui
    from PyQt5.QtGui import *
    
    
    
    
    class Main(QDialog):
        def __init__(self, parent=None):
            super(Main, self).__init__(parent)
            font=QtGui.QFont("00コミック7",20)
    
            global img
            img=QPixmap('グリーングリーン.jpg')
            self.label = QLabel()
            self.label.setPixmap(img)
    
    
            foldabtn=QPushButton('FldaSave')
            foldabtn.clicked.connect(self.foldasave)
    
            layout = QVBoxLayout()
            layout.addWidget(self.label)
            layout.addWidget(foldabtn)
    
            self.setLayout(layout)
    
            self.setWindowTitle('text')
            self.show()
    
        def foldasave(self):
            foldaname=QFileDialog.getExistingDirectory(self,"save folda")
            img.save(foldaname,"JPG")
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        win = Main()
        sys.exit(app.exec_())
    
[/code]

これを実行すると次のようなGUIが出来ます。  
[![画像](https://i.stack.imgur.com/1nqLd.png)](https://i.stack.imgur.com/1nqLd.png)  
ここで、Foldasaveを押して、保存するフォルダーを選んで、そこにQPixmapで読み込んだ画像を保存したいです。しかし、作成したGUIでフォルダーを選択しても何も起きません。エラーすら吐きません。どうすればよいのでしょうか。

追記：  
folda関数内を

[code]

        foldaname=QFileDialog.getExistingDirectory(self,"save folda")
        foldaname=foldaname+"//image.jpg"
        img.save(foldaname,"JPG")
    
[/code]

にしたら出来ました。


CC BY-SA 3.0
2018-04-15T09:05:46.083
43262
2018-04-17T07:24:04.590
2018-04-17T07:05:39.657
26529
26529
question
python pyqt
pyqt5でQPixmapで読み取った画像を保存したい


`QPixmap`クラスの`save`メソッドに渡すのはファイル名ですので、  
`QFileDialog.getSaveFileName`でファイル名を取得すればよいと思います。

[code]

    # 例 (第3, 4, 5, 6引数は省略)
    filename = QFileDialog.getSaveFileName(self, "save")
    img.save(filename, "PNG")
    
[/code]

なお、`save`メソッドが成功したかどうかは、返り値が`0`かどうかで判断できると思います。


CC BY-SA 3.0
2018-04-15T11:39:49.390
43265
2018-04-15T11:39:49.390
20098
43262
answer


folda関数内を

[code]

    foldaname=QFileDialog.getExistingDirectory(self,"save folda")
    foldaname=foldaname+"//image.jpg"
    img.save(foldaname,"JPG")
    
[/code]

にしたら出来ました。


CC BY-SA 3.0
2018-04-17T07:24:04.590
43312
2018-04-17T07:24:04.590
26529
43262
answer