当前位置: 首页 > news >正文

纯色图片生成器

就是在测试代码的时候有时候会用到一些纯色的图片进行测试,后面突发奇想才搞了一个纯色生成器玩玩,有需要的可以三连自取哦~

一键生成高清纯色背景,满足设计、演示、测试需求。支持自定义颜色代码,快速导出PNG。


效果如下:


代码如下:

import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,QLabel, QSlider, QPushButton, QColorDialog, QSpinBox, QFileDialog
)
from PyQt5.QtGui import QColor, QImage, QPixmap
from PyQt5.QtCore import Qtclass SolidColorGenerator(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("纯色图片生成器")self.setGeometry(100, 100, 500, 400)# 初始化变量self.width = 400self.height = 300self.color = QColor(255, 0, 0)  # 默认红色# 创建主部件和布局main_widget = QWidget()main_layout = QVBoxLayout()# 预览区域self.preview_label = QLabel()self.preview_label.setAlignment(Qt.AlignCenter)self.preview_label.setMinimumHeight(200)self.preview_label.setStyleSheet("border: 1px solid gray;")main_layout.addWidget(self.preview_label)# 尺寸控制size_layout = QHBoxLayout()size_layout.addWidget(QLabel("宽度:"))self.width_spin = QSpinBox()self.width_spin.setRange(1, 5000)self.width_spin.setValue(self.width)self.width_spin.valueChanged.connect(self.update_size)size_layout.addWidget(self.width_spin)size_layout.addWidget(QLabel("高度:"))self.height_spin = QSpinBox()self.height_spin.setRange(1, 5000)self.height_spin.setValue(self.height)self.height_spin.valueChanged.connect(self.update_size)size_layout.addWidget(self.height_spin)main_layout.addLayout(size_layout)# 颜色控制color_layout = QHBoxLayout()self.color_label = QLabel("当前颜色: ")self.color_label.setStyleSheet(f"background-color: {self.color.name()};")color_layout.addWidget(self.color_label)self.color_button = QPushButton("选择颜色")self.color_button.clicked.connect(self.choose_color)color_layout.addWidget(self.color_button)main_layout.addLayout(color_layout)# RGB滑块rgb_layout = QVBoxLayout()# 红色滑块red_layout = QHBoxLayout()red_layout.addWidget(QLabel("红:"))self.red_slider = QSlider(Qt.Horizontal)self.red_slider.setRange(0, 255)self.red_slider.setValue(self.color.red())self.red_slider.valueChanged.connect(self.update_color_from_sliders)red_layout.addWidget(self.red_slider)rgb_layout.addLayout(red_layout)# 绿色滑块green_layout = QHBoxLayout()green_layout.addWidget(QLabel("绿:"))self.green_slider = QSlider(Qt.Horizontal)self.green_slider.setRange(0, 255)self.green_slider.setValue(self.color.green())self.green_slider.valueChanged.connect(self.update_color_from_sliders)green_layout.addWidget(self.green_slider)rgb_layout.addLayout(green_layout)# 蓝色滑块blue_layout = QHBoxLayout()blue_layout.addWidget(QLabel("蓝:"))self.blue_slider = QSlider(Qt.Horizontal)self.blue_slider.setRange(0, 255)self.blue_slider.setValue(self.color.blue())self.blue_slider.valueChanged.connect(self.update_color_from_sliders)blue_layout.addWidget(self.blue_slider)rgb_layout.addLayout(blue_layout)main_layout.addLayout(rgb_layout)# 保存按钮self.save_button = QPushButton("保存图片")self.save_button.clicked.connect(self.save_image)main_layout.addWidget(self.save_button)main_widget.setLayout(main_layout)self.setCentralWidget(main_widget)# 初始更新self.update_preview()def update_size(self):"""更新图像尺寸"""self.width = self.width_spin.value()self.height = self.height_spin.value()self.update_preview()def choose_color(self):"""打开颜色选择对话框"""new_color = QColorDialog.getColor(self.color, self, "选择颜色")if new_color.isValid():self.color = new_colorself.red_slider.setValue(self.color.red())self.green_slider.setValue(self.color.green())self.blue_slider.setValue(self.color.blue())self.update_preview()def update_color_from_sliders(self):"""根据滑块更新颜色"""self.color.setRed(self.red_slider.value())self.color.setGreen(self.green_slider.value())self.color.setBlue(self.blue_slider.value())self.update_preview()def update_preview(self):"""更新预览区域"""# 更新颜色标签self.color_label.setStyleSheet(f"""background-color: {self.color.name()};border: 1px solid gray;padding: 5px;""")self.color_label.setText(f"当前颜色: {self.color.name()}")# 创建预览图像preview_width = min(self.width, 400)preview_height = min(self.height, 300)# 创建预览图像preview_image = QImage(preview_width, preview_height, QImage.Format_RGB32)preview_image.fill(self.color)# 显示预览self.preview_label.setPixmap(QPixmap.fromImage(preview_image))# 显示尺寸信息self.preview_label.setToolTip(f"预览尺寸: {preview_width}x{preview_height}\n"f"实际保存尺寸: {self.width}x{self.height}")def save_image(self):"""保存图片到文件"""options = QFileDialog.Options()file_name, _ = QFileDialog.getSaveFileName(self, "保存图片", "","PNG图片 (*.png);;JPEG图片 (*.jpg *.jpeg);;所有文件 (*)",options=options)if file_name:# 创建全尺寸图像image = QImage(self.width, self.height, QImage.Format_RGB32)image.fill(self.color)# 根据文件扩展名确定格式if file_name.lower().endswith('.jpg') or file_name.lower().endswith('.jpeg'):format = 'JPG'else:format = 'PNG'  # 默认为PNGif image.save(file_name, format):self.statusBar().showMessage(f"图片已保存到: {file_name}", 5000)else:self.statusBar().showMessage(f"保存失败: {file_name}", 5000)if __name__ == "__main__":app = QApplication(sys.argv)window = SolidColorGenerator()window.show()sys.exit(app.exec_())

各位要是有啥有趣好玩的其他想法的可以评论区聊聊天哈~

http://www.lqws.cn/news/108703.html

相关文章:

  • 【Typst】1.Typst概述
  • 互联网c++开发岗位偏少,测开怎么样?
  • LEAP模型能源需求/供应预测、能源平衡表核算、空气污染物排放预测、碳排放建模预测、成本效益分析、电力系统优化
  • HCIP-Datacom Core Technology V1.0_3 OSPF基础
  • C++初赛的三讲
  • AUTOSAR CP——CanTrcv模块
  • JavaScript 字符串的常用方法有哪些?
  • Android 11以上App主动连接WIFI的完整方案
  • 机器学习——主成分分析(PCA)
  • LangChain核心之Runnable接口底层实现
  • Flowith,有一种Agent叫无限
  • Spring AI介绍及大模型对接
  • SpringCloud 分布式锁Redisson锁的重入性与看门狗机制 高并发 可重入
  • [Java 基础]运算符,将盒子套起来
  • leetcode hot100刷题日记——37.三数之和
  • 【HarmonyOS 5】鸿蒙APP使用【团结引擎Unity】开发的案例教程
  • SQL进阶之旅 Day 13:CTE与递归查询技术
  • 农业机器人的开发
  • QUIC——UDP实现可靠性传输
  • RTOS,其高级使用
  • 网络安全问题及对策研究
  • STM32学习之WWDG(原理+实操)
  • [Python] python信号处理绘制信号频谱
  • LeetCode Hot100刷题——完全平方数
  • 【PmHub面试篇】Gateway全局过滤器统计接口调用耗时面试要点解析
  • AXURE-动态面板
  • unity UI Canvas“高”性能写法
  • JavaScript 对象展开语法
  • 从零打造AI面试系统全栈开发
  • 灵光一现的问题和常见错误4