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

购物网站设计方案开发板组装实验报告

购物网站设计方案,开发板组装实验报告,百度推广技巧,网站的功能和作用是什么引言 在日常办公中#xff0c;PPT文件往往因为图片过大而导致文件体积过大#xff0c;不便于传输和存储。为了应对这一问题#xff0c;我们可以使用Python的wxPython图形界面库结合python-pptx和Pillow#xff0c;开发一个简单的PPTX压缩工具。本文将详细介绍如何实现这一…引言 在日常办公中PPT文件往往因为图片过大而导致文件体积过大不便于传输和存储。为了应对这一问题我们可以使用Python的wxPython图形界面库结合python-pptx和Pillow开发一个简单的PPTX压缩工具。本文将详细介绍如何实现这一功能。 C:\pythoncode\new\compresspptx.py 全部代码 import wx import os from pptx import Presentation from PIL import Image import ioclass CompressorFrame(wx.Frame):def __init__(self):super().__init__(parentNone, titlePPTX压缩工具)self.panel wx.Panel(self)self.create_ui()def create_ui(self):vbox wx.BoxSizer(wx.VERTICAL)# 文件选择部分hbox1 wx.BoxSizer(wx.HORIZONTAL)self.file_path wx.TextCtrl(self.panel, size(300, -1))browse_btn wx.Button(self.panel, label选择文件)browse_btn.Bind(wx.EVT_BUTTON, self.on_browse)hbox1.Add(self.file_path, proportion1, flagwx.EXPAND|wx.ALL, border5)hbox1.Add(browse_btn, flagwx.ALL, border5)# 压缩按钮compress_btn wx.Button(self.panel, label开始压缩)compress_btn.Bind(wx.EVT_BUTTON, self.on_compress)# 进度条self.progress wx.Gauge(self.panel, range100, size(400, 25))# 状态文本self.status_text wx.StaticText(self.panel, label)vbox.Add(hbox1, flagwx.EXPAND|wx.ALL, border5)vbox.Add(compress_btn, flagwx.ALIGN_CENTER|wx.ALL, border5)vbox.Add(self.progress, flagwx.EXPAND|wx.ALL, border5)vbox.Add(self.status_text, flagwx.EXPAND|wx.ALL, border5)self.panel.SetSizer(vbox)self.Fit()def on_browse(self, event):with wx.FileDialog(self, 选择PPTX文件, wildcardPowerPoint files (*.pptx)|*.pptx,stylewx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:if fileDialog.ShowModal() wx.ID_CANCEL:returnpath fileDialog.GetPath()path os.path.normpath(path.strip())self.file_path.SetValue(path)def update_status(self, text):wx.CallAfter(self.status_text.SetLabel, text)def on_compress(self, event):if not self.file_path.GetValue():wx.MessageBox(请先选择文件, 提示, wx.OK | wx.ICON_INFORMATION)returninput_path self.file_path.GetValue().strip()input_path os.path.normpath(input_path)if not os.path.exists(input_path):wx.MessageBox(文件不存在请检查路径, 错误, wx.OK | wx.ICON_ERROR)returnoutput_path self._get_output_path(input_path)try:self._compress_pptx(input_path, output_path)wx.MessageBox(压缩完成\n保存路径 output_path, 成功, wx.OK | wx.ICON_INFORMATION)except Exception as e:wx.MessageBox(f压缩过程中出错{str(e)}, 错误, wx.OK | wx.ICON_ERROR)finally:self.progress.SetValue(0)self.update_status()def _get_output_path(self, input_path):directory os.path.dirname(input_path)filename os.path.basename(input_path)name, ext os.path.splitext(filename)return os.path.join(directory, f{name}_compressed{ext})def _compress_pptx(self, input_path, output_path):try:prs Presentation(input_path)except Exception as e:raise Exception(f无法打开PPTX文件: {str(e)})total_slides len(prs.slides)processed_images 0skipped_images 0for i, slide in enumerate(prs.slides):self.update_status(f正在处理第 {i1}/{total_slides} 张幻灯片)shapes_with_images []for shape in slide.shapes:if hasattr(shape, image):shapes_with_images.append(shape)for shape in shapes_with_images:try:# 获取图片数据image_bytes shape.image.blob# 使用PIL压缩图片with Image.open(io.BytesIO(image_bytes)) as img:# 转换RGBA为RGBif img.mode RGBA:img img.convert(RGB)# 压缩图片# 如果图片较大调整尺寸max_size 800 # 最大尺寸为1024像素if img.width max_size or img.height max_size:ratio min(max_size/img.width, max_size/img.height)new_size (int(img.width * ratio), int(img.height * ratio))img img.resize(new_size, Image.LANCZOS)output_buffer io.BytesIO()img.save(output_buffer, formatJPEG, quality10, optimizeTrue)# 替换原图片shape._element.blip.embed.rId shape._element.blip.embed.rIdnew_image output_buffer.getvalue()# 更新图片数据image_part shape.imageimage_part._blob new_imageprocessed_images 1except Exception as e:print(f处理图片时出错: {str(e)})skipped_images 1continue# 更新进度条progress int((i 1) / total_slides * 100)wx.CallAfter(self.progress.SetValue, progress)self.update_status(f完成成功处理 {processed_images} 张图片跳过 {skipped_images} 张图片)try:prs.save(output_path)except Exception as e:raise Exception(f保存文件时出错: {str(e)})def main():app wx.App()frame CompressorFrame()frame.Show()app.MainLoop()if __name__ __main__:main()环境准备 在开始之前我们需要安装以下Python库 wxPython用于创建图形用户界面python-pptx用于处理PPTX文件Pillow用于图片压缩 安装命令 pip install wxPython python-pptx Pillow代码结构 代码主要包括以下几个部分 图形界面设计文件选择与压缩功能图片压缩逻辑 代码实现 导入必要模块 import wx import os from pptx import Presentation from PIL import Image import io创建主窗口 主窗口CompressorFrame继承自wx.Frame用于展示UI组件。 class CompressorFrame(wx.Frame):def __init__(self):super().__init__(parentNone, titlePPTX压缩工具)self.panel wx.Panel(self)self.create_ui()def create_ui(self):vbox wx.BoxSizer(wx.VERTICAL)# 文件选择部分hbox1 wx.BoxSizer(wx.HORIZONTAL)self.file_path wx.TextCtrl(self.panel, size(300, -1))browse_btn wx.Button(self.panel, label选择文件)browse_btn.Bind(wx.EVT_BUTTON, self.on_browse)hbox1.Add(self.file_path, proportion1, flagwx.EXPAND|wx.ALL, border5)hbox1.Add(browse_btn, flagwx.ALL, border5)# 压缩按钮compress_btn wx.Button(self.panel, label开始压缩)compress_btn.Bind(wx.EVT_BUTTON, self.on_compress)# 进度条self.progress wx.Gauge(self.panel, range100, size(400, 25))# 状态文本self.status_text wx.StaticText(self.panel, label)vbox.Add(hbox1, flagwx.EXPAND|wx.ALL, border5)vbox.Add(compress_btn, flagwx.ALIGN_CENTER|wx.ALL, border5)vbox.Add(self.progress, flagwx.EXPAND|wx.ALL, border5)vbox.Add(self.status_text, flagwx.EXPAND|wx.ALL, border5)self.panel.SetSizer(vbox)self.Fit()文件选择功能 通过文件对话框让用户选择PPTX文件。 def on_browse(self, event):with wx.FileDialog(self, 选择PPTX文件, wildcardPowerPoint files (*.pptx)|*.pptx,stylewx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:if fileDialog.ShowModal() wx.ID_CANCEL:returnpath fileDialog.GetPath()self.file_path.SetValue(os.path.normpath(path.strip()))压缩功能实现 压缩图片逻辑 使用Pillow库压缩PPT中的图片将其转换为JPEG格式并降低质量以减少文件大小。限制图片的最大尺寸保持图片的可视质量。 更新进度条与状态 使用wx.Gauge展示处理进度。实时更新处理状态。 def _compress_pptx(self, input_path, output_path):prs Presentation(input_path)total_slides len(prs.slides)processed_images 0skipped_images 0for i, slide in enumerate(prs.slides):self.update_status(f正在处理第 {i1}/{total_slides} 张幻灯片)shapes_with_images [shape for shape in slide.shapes if hasattr(shape, image)]for shape in shapes_with_images:try:image_bytes shape.image.blobwith Image.open(io.BytesIO(image_bytes)) as img:if img.mode RGBA:img img.convert(RGB)max_size 800if img.width max_size or img.height max_size:ratio min(max_size/img.width, max_size/img.height)new_size (int(img.width * ratio), int(img.height * ratio))img img.resize(new_size, Image.LANCZOS)output_buffer io.BytesIO()img.save(output_buffer, formatJPEG, quality10, optimizeTrue)new_image output_buffer.getvalue()shape.image._blob new_imageprocessed_images 1except Exception as e:print(f处理图片时出错: {str(e)})skipped_images 1wx.CallAfter(self.progress.SetValue, int((i 1) / total_slides * 100))self.update_status(f完成成功处理 {processed_images} 张图片跳过 {skipped_images} 张图片)prs.save(output_path)主函数 启动wxPython应用程序。 def main():app wx.App()frame CompressorFrame()frame.Show()app.MainLoop()if __name__ __main__:main()运行结果
http://www.hkea.cn/news/14320446/

相关文章:

  • 买好了域名 如何做网站上海网站建设方案
  • 西宁做网站_君博优选中企动力企业
  • 在哪些网站可以发布推广信息深圳设计公司
  • 北京建站优化公司有些网站打不开
  • php做的网站处理速度怎么样网址例子
  • 怎么上国外购物网站项目信息网官网
  • 岳阳网站制作公司响应式布局网站
  • 做准的算命网站公众号管理平台
  • 栾城做网站中标公告在哪里查询
  • 商贸公司网站建设方案建筑设计资质等级标准
  • 最佳经验网站网络营销研究现状文献综述
  • 大宇网络做网站怎么样西安市网站建设
  • 做网站还是软件知识付费网站开发
  • 建筑公司网站案例微网站免费开发平台
  • 融媒体建设网站怎么搞高效简便的网站开发
  • 广东网站开发需要多少钱推广专员是销售吗
  • 谁做网站做的比较可信app优化建议
  • 淘宝联盟怎么新建网站北京做网站推广
  • 观澜网站建设公司做网站设计要注意什么问题
  • 萝岗哪家网站建设好可商用的图片素材网站
  • 椒江住房和城乡建设部网站网站开发步骤
  • 怎样做企业的网站首页网页设计与制作课程教学大纲
  • 手机门户网站源码东丽网站建设公司
  • 企联网站建设学校联系我们网站制作
  • 湛江市建设局官方网站c网站开发
  • 中国建设网站官网wordpress设置链接到新页面
  • 网站设计制作的连接方式如何做类似千图网的网站
  • 企业网站优化方案模板怎么做查询数据输入的网站
  • 为违法网站做推广进去要几年淘宝网站建设的目标是什么意思
  • 北京建设协会网站自己有域名怎么做网站