基于Python編寫圖片去水印小工具
你有沒有注意到,某魚上有不少提供去水印的服務(wù),收取1塊錢每張圖。最搞笑的是,很多人都沒意識(shí)到,去水印的技術(shù)其實(shí)非常簡(jiǎn)單,尤其是現(xiàn)在AI盛行的時(shí)代,好多平臺(tái)會(huì)提供的去水印接口便宜又好用,一張圖片只需要幾分錢就能搞定,比某魚的1塊錢便宜不知道倍!
為什么說是暴利呢?因?yàn)榛ń惆l(fā)現(xiàn)https://www.textin.com/
上面有個(gè)圖像水印去除的接口,調(diào)用1次只需要0.025?。?!妥妥的只賺不虧呀!
我們?cè)诳纯慈ニ〉男Ч?,還是很厲害的,反正讓我PS絕對(duì)沒人家做的這么好,而且圖片也沒壓縮:
官方還貼心的給出了接口調(diào)用示例:
接下來我們只需要套個(gè)GUI外殼,方便我們批量處理圖片即可。
把它做成一個(gè)GUI工具
官網(wǎng)雖然給出了調(diào)用示例,但是為了提高操作便捷性,我們可以做一個(gè)圖形化界面(GUI)。別擔(dān)心,GUI不難,我這就來帶你做一個(gè)簡(jiǎn)單的Windows桌面應(yīng)用,用Tkinter這個(gè)Python內(nèi)建的庫(kù)。
1. 安裝必要的庫(kù)
pip install requests pillow
2. 編寫GUI代碼
import os import tkinter as tk from tkinter import filedialog, messagebox import json import requests import base64 from PIL import Image from io import BytesIO def get_file_content(filePath): with open(filePath, 'rb') as fp: return fp.read() # 之前的水印去除API調(diào)用部分 class CommonOcr(object): def __init__(self, img_path=None, is_url=False): # 圖像水印去除 self._url = 'https://api.textin.com/ai/service/v1/image/watermark_remove' # 請(qǐng)登錄后前往 “工作臺(tái)-賬號(hào)設(shè)置-開發(fā)者信息” 查看 x-ti-app-id # 示例代碼中 x-ti-app-id 非真實(shí)數(shù)據(jù) self._app_id = '73b************************d269' # 請(qǐng)登錄后前往 “工作臺(tái)-賬號(hào)設(shè)置-開發(fā)者信息” 查看 x-ti-secret-code # 示例代碼中 x-ti-secret-code 非真實(shí)數(shù)據(jù) self._secret_code = 'de1ac7*******************48993131' self._img_path = img_path self._is_url = is_url def recognize(self): head = {} try: head['x-ti-app-id'] = self._app_id head['x-ti-secret-code'] = self._secret_code if self._is_url: head['Content-Type'] = 'text/plain' body = self._img_path else: image = get_file_content(self._img_path) head['Content-Type'] = 'application/octet-stream' body = image result = requests.post(self._url, data=body, headers=head) return result.text except Exception as e: return e def down_img(base64str,output_folder,img_name): try: img_data = base64.b64decode(base64str) img = Image.open(BytesIO(img_data)) file_name = os.path.join(output_folder,img_name) img.save(file_name) # with open(output_folder, 'wb') as f: # f.write(image_data) print(f"去水印圖片已經(jīng)保存到 {file_name}") except Exception as e: print(f"圖片去水印失敗: {e}") # GUI界面部分 class WatermarkRemoverApp: def __init__(self, root): self.root = root self.root.title("去水印工具") self.root.geometry("400x200") self.select_button = tk.Button(root, text="選擇文件夾", command=self.select_folder) self.select_button.pack(pady=20) self.process_button = tk.Button(root, text="開始去水印", command=self.process_images, state=tk.DISABLED) self.process_button.pack(pady=20) def select_folder(self): self.folder_path = filedialog.askdirectory() if self.folder_path: self.process_button.config(state=tk.NORMAL) def process_images(self): output_folder = os.path.join(self.folder_path, "output") os.makedirs(output_folder, exist_ok=True) for file_name in os.listdir(self.folder_path): if file_name.endswith((".jpg",".jpeg", ".png",".bmp")): file_path = os.path.join(self.folder_path, file_name) response = CommonOcr(img_path=file_path).recognize() # 解析JSON字符串為Python字典 data = json.loads(response) if data["code"] ==200: # 假設(shè)接口返回包含"success"表示成功 down_img(data["result"]["image"],output_folder,file_name) else: messagebox.showerror("錯(cuò)誤", f"圖片 {file_name} 去水印失敗!{data['msg']}") messagebox.showinfo("完成", "所有圖片已處理完畢!") if __name__ == "__main__": root = tk.Tk() app = WatermarkRemoverApp(root) root.mainloop()
3. 編寫GUI代碼
運(yùn)行起來是這個(gè)樣子的
使用教程
- 選擇文件夾:點(diǎn)擊“選擇文件夾”按鈕,選擇你要處理的圖片文件夾。
- 開始去水印:點(diǎn)擊“開始去水印”,程序會(huì)自動(dòng)遍歷文件夾中的所有圖片(支持JPG、PNG等格式),然后通過調(diào)用textin接口去除水印。
- 輸出文件:去水印后的圖片會(huì)保存在當(dāng)前文件夾中的
output
目錄下。
如何賺錢?
現(xiàn)在你可以用這個(gè)工具來給圖片去水印了,接下來就是去某魚發(fā)布去水印的服務(wù)。比如,你可以定個(gè)價(jià)格:每張圖片1元,批量去水印,隨便做個(gè)廣告推送,搞定!很多人會(huì)覺得手動(dòng)去水印很麻煩,尤其是做電商的商家,他們更愿意支付小額費(fèi)用來節(jié)省時(shí)間。
總結(jié)
這篇教程給大家展示了如何利用Python簡(jiǎn)單地實(shí)現(xiàn)一個(gè)去水印工具,并且利用textin的接口去水印服務(wù)賺取差價(jià)。通過GUI界面,你甚至可以讓這個(gè)工具變得更方便易用,適合沒有編程基礎(chǔ)的人群。你可以將這款工具用作副業(yè),快速投入市場(chǎng),甚至可以做得越來越大,開始接更多客戶,走上暴富之路(咳咳,開玩笑的)。
到此這篇關(guān)于基于Python編寫圖片去水印小工具的文章就介紹到這了,更多相關(guān)Python圖片去水印內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Selenium中免登錄的實(shí)現(xiàn)方法option詳解
在selenium中有很多種可以實(shí)現(xiàn)網(wǎng)站的免登錄,option就是其中的一種做法,這篇文章主要介紹了Selenium中免登錄的實(shí)現(xiàn)方法option,需要的朋友可以參考下2022-12-12Python matplotlib實(shí)現(xiàn)條形統(tǒng)計(jì)圖
這篇文章主要為大家詳細(xì)介紹了Python matplotlib實(shí)現(xiàn)條形統(tǒng)計(jì)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04詳解Python3 中hasattr()、getattr()、setattr()、delattr()函數(shù)及示例代碼數(shù)
本文通過示例代碼給大家詳細(xì)介紹了Python3 中hasattr()、getattr()、setattr()、delattr()函數(shù),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-04-04OPENCV去除小連通區(qū)域,去除孔洞的實(shí)例講解
今天小編就為大家分享一篇OPENCV去除小連通區(qū)域,去除孔洞的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06python+opencv實(shí)現(xiàn)霍夫變換檢測(cè)直線
這篇文章主要為大家詳細(xì)介紹了python+opencv實(shí)現(xiàn)霍夫變換檢測(cè)直線,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12python中K-means算法基礎(chǔ)知識(shí)點(diǎn)
在本篇文章里小編給大家整理的是一篇關(guān)于python中K-means算法基礎(chǔ)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。2021-01-01