欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Python編寫圖片去水印小工具

 更新時(shí)間:2025年05月12日 10:46:36   作者:花小姐的春天  
你有沒(méi)有注意到,某魚上有不少提供去水印的服務(wù),收取1塊錢每張圖,最搞笑的是,很多人都沒(méi)意識(shí)到,去水印的技術(shù)其實(shí)非常簡(jiǎn)單,所以本文來(lái)和大家講講如何使用Python編寫圖片去水印小工具吧

你有沒(méi)有注意到,某魚上有不少提供去水印的服務(wù),收取1塊錢每張圖。最搞笑的是,很多人都沒(méi)意識(shí)到,去水印的技術(shù)其實(shí)非常簡(jiǎn)單,尤其是現(xiàn)在AI盛行的時(shí)代,好多平臺(tái)會(huì)提供的去水印接口便宜又好用,一張圖片只需要幾分錢就能搞定,比某魚的1塊錢便宜不知道倍!

為什么說(shuō)是暴利呢?因?yàn)榛ń惆l(fā)現(xiàn)https://www.textin.com/上面有個(gè)圖像水印去除的接口,調(diào)用1次只需要0.025?。?!妥妥的只賺不虧呀!

我們?cè)诳纯慈ニ〉男Ч€是很厲害的,反正讓我PS絕對(duì)沒(méi)人家做的這么好,而且圖片也沒(méi)壓縮:

官方還貼心的給出了接口調(diào)用示例:

接下來(lái)我們只需要套個(gè)GUI外殼,方便我們批量處理圖片即可。

把它做成一個(gè)GUI工具

官網(wǎng)雖然給出了調(diào)用示例,但是為了提高操作便捷性,我們可以做一個(gè)圖形化界面(GUI)。別擔(dān)心,GUI不難,我這就來(lái)帶你做一個(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)行起來(lái)是這個(gè)樣子的

使用教程 

  • 選擇文件夾:點(diǎn)擊“選擇文件夾”按鈕,選擇你要處理的圖片文件夾。
  • 開始去水印:點(diǎn)擊“開始去水印”,程序會(huì)自動(dòng)遍歷文件夾中的所有圖片(支持JPG、PNG等格式),然后通過(guò)調(diào)用textin接口去除水印。
  • 輸出文件:去水印后的圖片會(huì)保存在當(dāng)前文件夾中的output目錄下。

如何賺錢?

現(xiàn)在你可以用這個(gè)工具來(lái)給圖片去水印了,接下來(lái)就是去某魚發(fā)布去水印的服務(wù)。比如,你可以定個(gè)價(jià)格:每張圖片1元,批量去水印,隨便做個(gè)廣告推送,搞定!很多人會(huì)覺(jué)得手動(dòng)去水印很麻煩,尤其是做電商的商家,他們更愿意支付小額費(fèi)用來(lái)節(jié)省時(shí)間。

總結(jié) 

這篇教程給大家展示了如何利用Python簡(jiǎn)單地實(shí)現(xiàn)一個(gè)去水印工具,并且利用textin的接口去水印服務(wù)賺取差價(jià)。通過(guò)GUI界面,你甚至可以讓這個(gè)工具變得更方便易用,適合沒(méi)有編程基礎(chǔ)的人群。你可以將這款工具用作副業(yè),快速投入市場(chǎng),甚至可以做得越來(lái)越大,開始接更多客戶,走上暴富之路(咳咳,開玩笑的)。

到此這篇關(guān)于基于Python編寫圖片去水印小工具的文章就介紹到這了,更多相關(guān)Python圖片去水印內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中對(duì)信號(hào)的處理詳解

    python中對(duì)信號(hào)的處理詳解

    這篇文章主要給大家介紹了關(guān)于python中對(duì)信號(hào)處理的相關(guān)資料, 計(jì)算機(jī)借助信號(hào)來(lái)接收和發(fā)送各種命令,操作系統(tǒng)針對(duì)其編程要接收或生成的每種命令列出了至少一個(gè)信號(hào),需要的朋友可以參考下
    2021-07-07
  • Selenium中免登錄的實(shí)現(xiàn)方法option詳解

    Selenium中免登錄的實(shí)現(xiàn)方法option詳解

    在selenium中有很多種可以實(shí)現(xiàn)網(wǎng)站的免登錄,option就是其中的一種做法,這篇文章主要介紹了Selenium中免登錄的實(shí)現(xiàn)方法option,需要的朋友可以參考下
    2022-12-12
  • Python matplotlib實(shí)現(xiàn)條形統(tǒng)計(jì)圖

    Python matplotlib實(shí)現(xiàn)條形統(tǒng)計(jì)圖

    這篇文章主要為大家詳細(xì)介紹了Python matplotlib實(shí)現(xiàn)條形統(tǒng)計(jì)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • python格式化字符串實(shí)例總結(jié)

    python格式化字符串實(shí)例總結(jié)

    這篇文章主要介紹了python格式化字符串的方法,實(shí)例展示了常見的幾類Python針對(duì)字符串的格式方法,非常實(shí)用,需要的朋友可以參考下
    2014-09-09
  • 詳解Python3 中hasattr()、getattr()、setattr()、delattr()函數(shù)及示例代碼數(shù)

    詳解Python3 中hasattr()、getattr()、setattr()、delattr()函數(shù)及示例代碼數(shù)

    本文通過(guò)示例代碼給大家詳細(xì)介紹了Python3 中hasattr()、getattr()、setattr()、delattr()函數(shù),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-04-04
  • OPENCV去除小連通區(qū)域,去除孔洞的實(shí)例講解

    OPENCV去除小連通區(qū)域,去除孔洞的實(shí)例講解

    今天小編就為大家分享一篇OPENCV去除小連通區(qū)域,去除孔洞的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • python+opencv實(shí)現(xiàn)霍夫變換檢測(cè)直線

    python+opencv實(shí)現(xiàn)霍夫變換檢測(cè)直線

    這篇文章主要為大家詳細(xì)介紹了python+opencv實(shí)現(xiàn)霍夫變換檢測(cè)直線,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • TensorFlow 滑動(dòng)平均的示例代碼

    TensorFlow 滑動(dòng)平均的示例代碼

    這篇文章主要介紹了TensorFlow 滑動(dòng)平均的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • python逐行讀寫txt文件的實(shí)例講解

    python逐行讀寫txt文件的實(shí)例講解

    下面小編就為大家分享一篇python逐行讀寫txt文件的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • python中K-means算法基礎(chǔ)知識(shí)點(diǎn)

    python中K-means算法基礎(chǔ)知識(shí)點(diǎn)

    在本篇文章里小編給大家整理的是一篇關(guān)于python中K-means算法基礎(chǔ)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-01-01

最新評(píng)論