1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

スクショした画像を、一発で特定のフォルダーに保存!

Last updated at Posted at 2024-10-19

ちょこっと業務を簡略化したい

 この記事では、ちょこっと効率化させたいことをプログラミングやツールをつかって解決していきます
ちょこっと削減した時間を、もっと人生楽しくなることに使いましょう!

本日のお題

 スクショしたデータを、一発で特定のフォルダーに保存!

デフォルトの保存場所
Mac:デスクトップ
Windows:「ピクチャ」フォルダー内の「スクリーンショット」フォルダー

特定のフォルダーへ移動させたい時、「ファイル名変更+フォルダー移動」 めんどくさくないですか?

もし複数スクショしたい場合、あーもう!😡💢 ってなりませんか?

こんな時に役に立ちます。

pythonデスクトップアプリ(tkinter)解決してみた

<環境>
🖥 Windows
🐍 python 3.12.5
🏆 VSCode

動画(音量調整してください⚠) ↓

YouTube動画

① 実行画面↓

② スクショする
Mac: Command (⌘) + Shift + 4
Windows: Win + Shift + S

③ 内容の確認 

クリックボードからスクリーンショットを表示をクリック

④ ファイル名の変更
デフォルトで「印刷記事」を記入してあるのでファイル名を変更してください

スクリーンショット 2024-10-19 18.32.34.png

⑤ フォルダー指定
表示されたスクリーンショットをPNGとして保存をクリックでファイルの選択

⑥ 完了!

フォルダーの指定とファイル名変更ができました✨

tkinter コード一部解説

※文言変更してください!

① デフォルトのファイル名を変更する
デフォルトを設定できます

スクリーンショット 2024-10-19 18.32.34.png

python
# デフォルトの記事名(ここ変更)
filename_entry.insert(0, "印刷記事") 

2箇所あり

② ボタンの意味

スクリーンショット 2024-10-19 18.51.52.png

  • クリックボードからスクリーンショットを表示 → スクショしてからボタンを押すと上にイメージが出てくる(サイズ調整していない)
  • 表示されたスクリーンショットをPNGとして保存 → PNGとして特定のフォルダーに保存する
  • すべてリセット → 消去

全体コード

全体コードはこちら
python
import customtkinter as ctk
from tkinter import filedialog
from PIL import Image, ImageTk, ImageGrab
import os
import time

# tkinterウィンドウの作成
ctk.set_appearance_mode("System")  
ctk.set_default_color_theme("blue")  
root = ctk.CTk()  
root.geometry("500x600")


display_image = None


message_label = ctk.CTkLabel(root, text="", fg_color="red")
message_label.pack(pady=10)


filename_label = ctk.CTkLabel(root, text="保存するファイル名 :")
filename_label.pack(pady=5)

filename_entry = ctk.CTkEntry(root, width=200)
filename_entry.pack(pady=10)

# デフォルトの記事名(ここ変更)
filename_entry.insert(0, "印刷記事")  

# キャンバスの作成
canvas = ctk.CTkCanvas(root, width=500, height=300)
canvas.pack()


def display_screenshot_from_clipboard():
    global display_image
    time.sleep(1) 

 
    screenshot = ImageGrab.grabclipboard()
    
    if isinstance(screenshot, Image.Image): 
  
        display_image = ImageTk.PhotoImage(screenshot)

        canvas.create_image(0, 0, anchor="nw", image=display_image)
        message_label.configure(text="スクリーンショットが表示されました", fg_color="green")
    else:
        message_label.configure(text="クリップボードに画像がありません。もう一度スクリーンショットを選択してください。", fg_color="red")

# 画像をPNGとして保存する関数
def save_image_as_png():
    if display_image is not None:

        screenshot = ImageGrab.grabclipboard()

    
        file_name = filename_entry.get().strip()
        if not file_name:
            message_label.configure(text="ファイル名を入力してください。", fg_color="red")
            return

        save_directory = filedialog.askdirectory()
        
        if save_directory:
            
            png_path = os.path.join(save_directory, f"{file_name}.png")
            screenshot.save(png_path, "PNG")
            message_label.configure(text=f"PNGが保存されました: {png_path}", fg_color="green")
        else:
            message_label.configure(text="保存先が選択されていません。", fg_color="red")
    else:
        message_label.configure(text="表示された画像がありません。スクリーンショットを取得してください。", fg_color="red")

# すべてをリセットする関数
def reset_all():
    global display_image
    display_image = None
    canvas.delete("all")  
    filename_entry.delete(0, ctk.END)  
    # デフォルトの記事名(ここ変更)
    filename_entry.insert(0, "印刷記事")  
    message_label.configure(text="すべてがリセットされました。", fg_color="green")


display_button = ctk.CTkButton(root, text="クリップボードからスクリーンショットを表示", command=display_screenshot_from_clipboard)
display_button.pack(pady=10)


save_button = ctk.CTkButton(root, text="表示されたスクリーンショットをPNGとして保存", command=save_image_as_png)
save_button.pack(pady=10)

reset_button = ctk.CTkButton(root, text="すべてリセット", command=reset_all)
reset_button.pack(pady=10)

root.mainloop()

🧡最後に

このコードをベースに修正し、業務をちょこっと楽にしてみてください〜

今後、このようにちょっとした効率化のための情報を載せます。あなたの業務でも役立つこと願っています💓

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?