colorpix取色小工具_Python版的取色器

        大家好,好久没有更新,希望不要把我忘了啊,前几天工作中遇到一个小困难,我想去取一个图片某个区域的色值需要用一下,但是真的不知用什么工具,然后把图片发给同事,用他电脑上的PS查看了一下,感觉工作中没有一些小工具真的是太烦了,大大降低了工作效率,于是周末闲来无事,想试试写一个小工具用用。

        这是界面UI一个基于PYQT5的,网上看的时候,发现有些小伙伴做了Python版的取色器,不过UI是用的tkinter,因为没有用过它,而且个人觉得PYQT5更好用一些,下面一起来看看具体实现吧!

        从其他小伙伴已经实现的代码上获得了一个实现思路:

                1、创建两个窗口类,一个是主窗口,用于操作,显示色值,另一个用于显示整个屏幕上的东西。

                2、在显示屏幕的窗口上获取要取像素值的位置。

         主要的思路大致上就是这样了。(不知道有没有说清楚。。。。)

部分代码:

    class Win_Main(QWidget):    def __init__(self):        super().__init__()        self.initUI()    def initUI(self):        label = QLabel("色值:", self)        label.setStyleSheet("font-size:20px")        label.move(0, 100)        self.btn = QPushButton("取色", self)        self.btn.move(200, 100)        copy = QPushButton("复制", self)        copy.move(280, 100)        self.lineEdit = QLineEdit(self)        self.lineEdit.setReadOnly(True)        self.lineEdit.move(60, 102)        copy.clicked.connect(lambda: pyperclip.copy(self.lineEdit.text().split(":")[1]))        # self.setGeometry(300, 300, 500, 500)        self.setWindowTitle('取色器')

这是主界面的布局(软件功能单一,随便放的位置)

class ShowScree(QWidget):    point = pyqtSignal(int, int)    def __init__(self, filename):        super().__init__()        self.initUI()        self.fn = filename    def initUI(self):        # self.setGeometry(300, 300, 700, 700)        self.setWindowTitle('Get sender')    def mouseReleaseEvent(self, e):        # 释放鼠标时发送信号(光标所在位置坐标)        self.point.emit(e.x(), e.y())        os.remove(self.fn)

这是第二个窗口

下面是整个逻辑结构:

class Run:    def __init__(self):        self.app = QApplication(sys.argv)        self.filename = 'temp.png'        self.win_main = Win_Main()        self.showscree = ShowScree(self.filename)        self.win_main.show()        self.win_main.btn.clicked.connect(self.get_scree)        # self.b.mouseReleaseEvent.connect(self.bbb)        sys.exit(self.app.exec_())    def get_scree(self):        self.win_main.close()        time.sleep(0.3)        im = ImageGrab.grab()   # 抓取当前屏幕的快照,返回一个模式为“RGB”的图像。        im.save(self.filename)        # 将抓取到的整个屏幕的图片设置为显示出来        self.showscree.palette = QPalette()        self.showscree.palette.setBrush(QPalette.Background, QBrush(QPixmap(self.filename)))        self.showscree.setPalette(self.showscree.palette)        self.showscree.showFullScreen()        # self.b.show()        self.showscree.point.connect(self.mouse_click)    def mouse_click(self, x, y):        self.win_main.show()        self.showscree.close()        self.get_color(x, y)    def get_color(self, x, y):        gdi32 = windll.gdi32        user32 = windll.user32        hdc = user32.GetDC(None)  # 获取颜色值        pixel = gdi32.GetPixel(hdc, x, y)  # 提取RGB值        r = pixel & 0x0000ff        g = (pixel & 0x00ff00) >> 8        b = pixel >> 16        self.win_main.lineEdit.setText("RGB:{},{},{}".format(r, g, b))        return [r, g, b]

e01bbb163d83f839b97686a428e09510.png

                                                    主界面

至此一个PYTHON 版的取色器就完成了,如果有不足之处,欢迎大家多多指点,多给建议,谢谢!如果有和我一样也是初学的同学需要参考,可以找我要源码哦!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值