国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - python如何實現(xiàn)圖片壓縮

python如何實現(xiàn)圖片壓縮

2020-09-12 00:01大飛 Python

這篇文章主要介紹了python如何實現(xiàn)圖片壓縮,幫助大家更好的利用python處理圖片,感興趣的朋友可以了解下

本工具是通過將圖片上傳到第三方網(wǎng)站tinypng,進行壓縮后下載,覆蓋本地圖片,tinypng是一個強大的圖片處理網(wǎng)站,目前最可靠的無損壓縮網(wǎng)站。

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import requests
from idna import unicode
from selenium import webdriver
import time
import os
 
browser = webdriver.Firefox(executable_path='/Users/lyf/Library/Google/geckodriver')
 
 
 
def tiny_png(url):
  # browser.get('https://tinypng.com/')
  upload_file = browser.find_element_by_tag_name("input")
  try:
    upload_file.send_keys(url)
    browser.implicitly_wait(20)
    a = browser.find_element_by_link_text('download')
    img_url = a.get_attribute('href')
    print(img_url)
    r = requests.get(img_url)
    with open(url, 'wb') as f:
      f.write(r.content)
    browser.refresh()
    time.sleep(2)
  except Exception as e:
    print(e)
 
 
def is_need_compress(img_path):
  """
  判斷是否需要壓縮處理 >10k 進行壓縮處理
  :param img_path:
  :return:
  """
  if img_path.endswith('.jpg') or img_path.endswith('.png'):
    size = os.path.getsize(img_path) / 1024
    if size > 10.0:
      print('文件大小:%sk' % size)
      return True
  return False
 
 
def file_loop(file_path):
  """
  遍歷文件夾
  :param file_path:
  :return:
  """
  files = os.listdir(file_path)
  for fi in files:
    fi_d = os.path.join(file_path, fi)
    if os.path.isdir(fi_d):
      file_loop(fi_d)
    else:
      child_path = os.path.join(file_path, fi_d)
      print(child_path)
      if is_need_compress(child_path):
        tiny_png(child_path)
 
 
if __name__ == "__main__":
  file_path = "/Users/lyf/AndroidStudioProjects/fubei/new-fubei-android-2.5-up/app/src/main/assets/www/assets"
  browser.get('https://tinypng.com/')
  file_loop(file_path)

改進版

優(yōu)化點:

1.遍歷完成本地文件夾再去上傳網(wǎng)站

2.所有圖片壓縮完成再去下載

3.啟動多線程下載

4.設(shè)定時間為加載完網(wǎng)絡(luò)就去上傳文件(非常非常重要,提速N倍)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
import requests
from selenium import webdriver
import time
import os
import _thread
import threading
from selenium.webdriver.support import expected_conditions as EC
 
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
 
# browser = webdriver.Firefox(executable_path='/Users/lyf/Library/Google/geckodriver')
 
browser = None
 
image_map = {}
compress_list = []
 
def tiny_png(url):
  """
  打開網(wǎng)站進行圖片上傳下載
  :param url:
  :return:
  """
  try:
    upload_file = WebDriverWait(browser, 10).until(
      EC.presence_of_element_located((By.TAG_NAME, "input"))
    )
    upload_file.send_keys(url)
    a = WebDriverWait(browser, 20).until(
      EC.presence_of_element_located((By.LINK_TEXT, "download"))
    )
    img_url = a.get_attribute('href')
    compress_list.remove(url)
    print(img_url)
    image_map[url] = img_url
    _thread.start_new_thread(sleep, (4,))
    print('刷新網(wǎng)頁')
    browser.refresh()
    time.sleep(2)
  except Exception as e:
    print(e.__str__())
    browser.execute_script('window.stop()')
 
 
def sleep(delay):
  """
  一定的時間后 未加載完網(wǎng)頁 只要控件加載出來就可以停止網(wǎng)頁加載
  :param delay:
  :return:
  """
  browser.set_page_load_timeout(delay)
  browser.set_script_timeout(delay)
 
 
def down_img(file_path, down_url):
  """
  下載圖片覆蓋原地址
  :param file_path:
  :param down_url:
  :return:
  """
  r = requests.get(down_url)
  with open(file_path, 'wb') as f:
    f.write(r.content)
  print('下載完成:%s' % down_url)
 
 
def is_need_compress(img_path):
  """
  判斷是否需要壓縮處理 >10k 進行壓縮處理
  :param img_path:
  :return:
  """
  if img_path.endswith('.jpg') or img_path.endswith('.png'):
    size = os.path.getsize(img_path) / 1024
    print(img_path)
    print('文件大小:%sk' % size)
    if size > 5000.0:
      print('*****' * 30)
      print('這么大的圖片搞笑嗎')
      print(img_path)
      print('*****' * 30)
    if size > 0.0 and size < 10.0:
      return True
  return False
 
 
def file_loop(file_path, compress_list):
  """
  遍歷文件夾
  :param file_path:
  :return:
  """
  files = os.listdir(file_path)
  for fi in files:
    fi_d = os.path.join(file_path, fi)
    if os.path.isdir(fi_d):
      file_loop(fi_d, compress_list)
    else:
      child_path = os.path.join(file_path, fi_d)
      if is_need_compress(child_path):
        compress_list.append(child_path)
 
 
def down_all():
  """
  下載所有的圖片
  :return:
  """
  thread_list = []
  for k, v in image_map.items():
    print('key:%s value:%s' % (k, v))
    th = threading.Thread(target=down_img, args=(k, v))
    th.start()
    thread_list.append(th)
  for r in thread_list:
    r.join()
 
 
def loop_press():
  """
  輪詢獲取下載地址
  :return:
  """
  for url in compress_list:
    tiny_png(url)
 
 
def start_browser():
  """
  啟動瀏覽器
  :return:
  """
  global browser
  browser = webdriver.Firefox(executable_path='/Users/lyf/Library/Google/geckodriver')
  _thread.start_new_thread(sleep, (10,))
  print('加載網(wǎng)頁')
  try:
    browser.get('https://tinypng.com/')
  except:
    browser.execute_script('window.stop()')
 
 
if __name__ == "__main__":
  start_time = time.time()
  file_path = "/Users/lyf/Desktop/www/assets"
  # 獲取本地所有需要壓縮的圖片
  file_loop(file_path, compress_list)
  print('符合條件的圖片有%s張' % len(compress_list))
  start_browser()
  loop_press()
  while len(compress_list) > 0:
    browser.quit()
    start_browser()
    loop_press()
 
  # 多線程下載拿到所有返回下載的地址
  down_all()
 
  end = time.time()
  time_m = end - start_time
  print("time: " + str(time_m))
  browser.quit()

以上就是python如何實現(xiàn)圖片壓縮的詳細(xì)內(nèi)容,更多關(guān)于python 圖片壓縮的資料請關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://www.link-nemo.com/u/10025/post/168133

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黄色片在线观看视频 | 国产色视频一区 | 日韩视频免费看 | 欧美日韩在线一区二区三区 | 国产第一毛片 | 韩日av片| 一级片一级片 | 欧美一区免费 | 日韩精品免费 | 国产中文 | 亚洲精品一区二区三区99 | 欧美综合区 | 精品在线一区二区 | 欧美激情精品久久久久久 | 亚洲国产成人久久 | 亚洲另类视频 | 91在线视频免费观看 | 日韩电影在线免费观看 | 精品在线播放 | 黑人精品欧美一区二区蜜桃 | 国产欧美精品一区二区色综合 | 午夜影院在线 | 亚洲欧洲av| 亚洲精品国产setv | 日韩在线视频在线观看 | 国产在线视频网站 | 日韩电影一区二区在线观看 | 国产高清亚洲 | 91免费视频| 亚洲欧美自拍视频 | 欧美日韩一区二区视频在线观看 | 亚洲国产成人精品久久久国产成人一区 | 91亚洲精品乱码久久久久久蜜桃 | 欧美日韩免费视频 | a网站在线观看 | 九九热视频精品在线观看 | 亚洲福利网站 | 久操资源| www乱| 欧美精品亚洲精品日韩精品 | 国产精品久久久久无码av |