鱼C论坛

 找回密码
 立即注册
查看: 6902|回复: 4

tkinter中如何修改图片大小

[复制链接]
发表于 2019-6-3 11:34:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如图,我想在tkinter界面内展示我的图片,但是图片太大,只能展示一部分,我又不想修改原文件的属性,能否在tkinter中调用什么函数,缩放该图片到适合的尺寸

Snipaste_2019-06-03_11-33-07.png
Snipaste_2019-06-03_11-29-50.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-6-3 17:27:03 | 显示全部楼层

回帖奖励 +2 鱼币

  1. import os, sys
  2. import cv2

  3. #按照指定图像大小调整尺寸
  4. def resize_image(image, height, width):
  5.      top, bottom, left, right = (0, 0, 0, 0)

  6.      #获取图像尺寸
  7.      h, w, _ = image.shape

  8.      #对于长宽不相等的图片,找到最长的一边
  9.      longest_edge = max(h, w)   

  10.      #计算短边需要增加多上像素宽度使其与长边等长
  11.      if h < longest_edge:
  12.          dh = longest_edge - h
  13.          top = dh // 2
  14.          bottom = dh - top
  15.      elif w < longest_edge:
  16.          dw = longest_edge - w
  17.          left = dw // 2
  18.          right = dw - left
  19.      else:
  20.          pass

  21.      #RGB颜色
  22.      BLACK = [0, 0, 0]

  23.      #给图像增加边界,是图片长、宽等长,cv2.BORDER_CONSTANT指定边界颜色由value指定
  24.      constant = cv2.copyMakeBorder(image, top , bottom, left, right, cv2.BORDER_CONSTANT, value = BLACK)

  25.      #调整图像大小并返回
  26.      return cv2.resize(constant, (height, width))

  27. def resizeImg(path_name, newpath):   
  28.      for dir_item in os.listdir(path_name):
  29.          #从初始路径开始叠加,合并成可识别的操作路径
  30.          full_path = os.path.abspath(os.path.join(path_name, dir_item))

  31.          if os.path.isdir(full_path):    #如果是文件夹,继续递归调用
  32.              read_path(full_path)
  33.          else:   #文件
  34.              if dir_item.endswith('.jpg'):
  35.                  image = cv2.imread(full_path)               
  36.                  image = resize_image(image, 64, 64)
  37.                  cv2.imwrite(newpath + '/' + dir_item, image)

  38. def main():
  39.     # 调整图片大小
  40.     f = 'E:/bd/train/val2/23'
  41.     fnew = 'E:/bd/train/val3/23'
  42.     resizeImg(f, fnew)

  43. if __name__ == "__main__":
  44.     main()
复制代码

供参考
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-3 22:46:31 | 显示全部楼层

你好,很感谢你的解答,看完代码之后我有几个地方不是很明白:
1:定义resizeImg这个函数的意义是什么,可否忽略这个函数直接导入文件地址
2:在自定义的resize函数的调用中,height以及width参数的填写应该如何填写
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-4 12:00:56 | 显示全部楼层
Maplelove 发表于 2019-6-3 22:46
你好,很感谢你的解答,看完代码之后我有几个地方不是很明白:
1:定义resizeImg这个函数的意义是什么, ...

不好意思,我也是个新手,这个我是根据你的问题百度的答案,不过你说的直接调用应该是可以的,你自己测试一下就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2019-6-5 08:16:21 | 显示全部楼层
python小兵222 发表于 2019-6-4 12:00
不好意思,我也是个新手,这个我是根据你的问题百度的答案,不过你说的直接调用应该是可以的,你自己测试 ...

好的,谢谢你,我测试的时候会报错,参数缺失
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-16 04:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表