小编rec*_*dev的帖子

使用Python图像库和光晕效果调整透明度

在SO上有几个类似的问题,但没有一个真的有帮助.基本上我正在尝试调整一个简单的png图像,如下所示:

http://media.spiralknights.com/wiki-images/3/3e/Equipment-Proto_Sword_icon.png (来自mmo Spiral Knights,版权所有Three Rings Entertainment)

我最初实现了一个在php中使用这些图像的实用程序,并且调整大小的实用程序工作得很好.我使用了PHP文档中imagecopyresampled页面上描述的方法.

老实说,我甚至无法在Photoshop中更好地调整大小,但结果在python中几乎是灾难性的.我一直得到光环效果,我相信这至少部分是透明像素的实际RGBA值.在这里,这张图片告诉它更好:

调整大小的例子

(第二次到最后一次调整大小只是我在另一个论坛上看到的建议,首先调整大小到最终大小的两倍,并且DID帮助至少一点,但还不够)

调整大小时,图像已处于RGBA模式.

正如您所看到的,PHP和Photoshop调整大小是无光晕的.老实说除了PHP调整大小之外的一切都做了太多工作,我喜欢php图像中的最小调色板(如果你看一下大版本,你可以看到PHP调整大小在颜色之间使用较少),但我可以忍受Photoshop的方式已经调整了大小,甚至蟒蛇的内部都调整了大小,但光环是不可接受的.

在我看来 - 如果我错了就纠正我 - PHP和Photoshop似乎知道在插值时不使用alpha通道中像素的颜色,但是python正在使用那个光边框,否则是透明的,在其调整大小.

不幸的是,我需要调整大量不同的图标,不同的配置文件,所以它们并不像这个圆形的那么简单,但这只是我在实验时使用的第一个.

它本身并不是一个代码问题,但如果你需要一些东西可以看,那么这就是要点:

>> import Image
>> img = Image.open('swordorig.png')
>> img
<PngImagePlugin.PngImageFile image mode=RGBA size=256x256 at 0x2A3AF58>
>> img.resize((36,36), Image.ANTIALIAS).save('swordresize.png')
Run Code Online (Sandbox Code Playgroud)

最终的问题是:有没有办法告诉PIL不要在重新采样时使用alpha为0的像素的颜色?

python alpha image resampling python-imaging-library

5
推荐指数
1
解决办法
4200
查看次数

参数1具有意外类型'Ui_mainWindow'

我正在尝试为我在这里的一些人的帮助下编写的一个小程序制作GUI,无论如何,我在PyQt中制作了GUI,看起来很好.我添加了一个名为dirButton的按钮,上面写着"选择目录"

self.dirButton = QtGui.QPushButton(self.buttonWidget)
self.dirButton.setGeometry(QtCore.QRect(0, 0, 91, 61))
self.dirButton.setObjectName(_fromUtf8("dirButton"))
self.dirButton.clicked.connect(self.browse)
Run Code Online (Sandbox Code Playgroud)

在底线,我点击它时调用self.browse,这是:

def browse(self):
    filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '.')
    fname = open(filename)
    data = fname.read()
    self.textEdit.setText(data)
    fname.close()
Run Code Online (Sandbox Code Playgroud)

但是,这是我得到的错误:

Traceback (most recent call last):
File "C:\Users\Kevin\Desktop\python-tumblr-0.1\antearaGUI.py", line 88, in browse
filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '.')
TypeError: QFileDialog.getOpenFileName(QWidget parent=None, QString caption=QString(),     QString directory=QString(), QString filter=QString(), QString selectedFilter=None, QFileDialog.Options options=0): argument 1 has unexpected type 'Ui_mainWindow'
Run Code Online (Sandbox Code Playgroud)

因此,ui_mainWindow是我的所有GUI按钮和GUI本身都存储在其中的类.

class Ui_mainWindow(object):
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我会收到错误,有没有人有任何想法?

这是一个指向整个GUI的pastebin链接:http://pastebin.com/BWCcXxUW

python pyqt pyqt4

4
推荐指数
2
解决办法
2万
查看次数

PyQt运行时问题

我希望我的代码通过显示qtwidget然后运行forloop来运行,但它运行forloop然后向我显示我的小部件.为什么是这样?

class tes(QWidget):

    def __init__(self):
        super(tes, self).__init__()
        self.initUI()
        for i in range (1000000):
            print("s")

    def initUI(self):
        t = QTableWidget(8,8,self)        
        self.show()
        self.resize(1000,1000)
        t.setGeometry(0,0,500,500)
        t.show()

def main():
    app = QApplication(sys.argv)
    t = tes()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

python qt pyqt

3
推荐指数
2
解决办法
1万
查看次数

标签 统计

python ×3

pyqt ×2

alpha ×1

image ×1

pyqt4 ×1

python-imaging-library ×1

qt ×1

resampling ×1