本帖最后由 yingziLI 于 2025-3-24 12:12 编辑
程序实现功能
1、编写程序的初衷是为了解决工作中为了上传指定大小图片的烦恼,如:文件上传场景中需要测试10M的图片等。
2、在使用中发现也可以方便隐藏本地的某些文件,把这些文件打包成压缩包在和图片合并展示的就是图片不是对应的文件。
使用说明
1、打包程序支持Windows系统,如果是Mac或linux系统可以自动打包或安装python环境运行;
2、使用方式,双击运行“png_zip.exe”程序即可;
3、保存路径和合成的图片名称可以修改,程序设置了默认值便于查找;
4、关于还原文件,可以把生成的图片后缀 .jpg 修改为 .zip 或 .rar,在打开对应压缩包即可;
打包功能说明
1、因为程序是使用python编写的,如果需要打包在不同的操作系统上运行,可以根据个人喜好选择不同的打包方式;
2、pyhton常用的打包工具有auto-py-to-exe、Nuitka、PyInstaller、Pynsist、cx_freeze、buildozer、py2app、py2exe等;
3、我这边使用的是Nuitka打包方式,具体打包命令:
nuitka --standalone --onefile --follow-imports --windows-icon-from-ico=wjzh32.ico --windows-disable-console --enable-plugin=tk-inter png_zip.py
4、使用pyinstaller打包方式,参考名称:
pyinstaller -i wjzh32.ico -F -w png_zip.py
运行效果截图
核心代码
def start_processing(self):
"""输入验证"""
required = [
(self.image_path, "未选择图片文件"),
(self.zip_path, "未选择压缩包"),
(self.output_name, "未设置输出文件名"),
(self.save_dir, "未设置保存路径")
]
for var, msg in required:
if not var.get():
messagebox.showwarning("错误", msg)
return
if self.output_name.get():
output_path = os.path.join(self.save_dir.get(), f"{self.output_name.get()}.jpg")
else:
output_path = os.path.join(self.save_dir.get(), f"{int(time())}.jpg")
print(f"正在生成预览图:{output_path}")
print(f"图片路径:{self.image_path.get()}")
print(f"压缩包路径:{self.zip_path.get()}")
print(f"预览图输出目录:{self.save_dir.get()}\n")
try:
with open(self.image_path.get(), "rb") as f_img, open(self.zip_path.get(), "rb") as f_zip:
img_data = f_img.read()
zip_data = f_zip.read()
merged_data = img_data + zip_data
with open(os.path.join(self.save_dir.get(), output_path), "wb") as f_out:
f_out.write(merged_data)
messagebox.showinfo("处理成功", f"预览图已生成:{output_path}")
except Exception as e:
print(f"错误:{str(e)}")
messagebox.showerror("错误", f"处理失败:{str(e)}")
下载地址:压缩包与图片合并工具V1.0.1
更新升级版本下载地址:
https://wwkk.lanzouo.com/b00zxmg11a
密码:52pojie
已经打包好了Windows系统的程序,可以下载使用,包含源文件,mac或linux系统可以自行下载源文件测试;
|