דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. מחשבים וטכנולוגיה
  3. עזרה הדדית - מחשבים וטכנולוגיה
  4. להורדה | 'תופס תמורתו' ממיר ומקטין קבצים קל, מהיר, וחינמי!💥

להורדה | 'תופס תמורתו' ממיר ומקטין קבצים קל, מהיר, וחינמי!💥

מתוזמן נעוץ נעול הועבר עזרה הדדית - מחשבים וטכנולוגיה
26 פוסטים 14 כותבים 671 צפיות 20 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • A AVIVI

    בס"ד

    הדגשה כרגיל- טוב.. מי שלא אוהב תוכנות שנוצרו עם AI נא לדלג לשרשור אחר שכוייח מראש!

    תופס תמורתו

    כרגיל כל דבר טוב מתחיל כי נמאס מה שהיה עד עכשיו (מי הזיז את ה(ג)בינה שלי?)

    בס"ד עלה בדעתי ליצור תוכנה להמרת קבצים ע"י הגבינה המלאכותית
    ובמיוחד להקטנת קבצים (שם החל הרעיון... נמאס לי להעלות חמש תמונות למייל במשך שעה רק בגלל שהמצלמה שלי טובה ב"ה...)
    תמיד יש לנו את הוידאו ששוקל טון ואת התמונה של הנוף ששוקלת 15 מ"ב ואת השיר שתופס הרבה מקום
    לשם כך ולעוד דברים נוספים נועד תופס תמורתו
    התוכנה להמרת קבצים בשניות שבע"ה תקל לנו מעט את החיים
    התוכנה כרגע ממירה וידאו אודיו ותמונה
    פותחים את התוכנה, בוחרים את הקובץ והיפ הופ הקובץ נחתך למחצה שליש ורביע לפי בחירתכם!
    הקבצים נשמרים בתקייה חדשה בשם 'קבצים_שהומרו' או בכל שפה אחרת שבחרתם כשפת התוכנה
    התוכנה תומכת בפורמטים המצויים
    התוכנה תומכת גם בהמרת תמונה ל- pdf ובהמרת וידאו לקובץ gif

    הערה חשובה לגבי הוידאו: כרגע לוקח קצת הרבה זמן לתוכנה להמיר קבצי וידאו אולם התוצאה שווה ככל שבדקתי!
    המרתי איתה קובץ וידאו במשקל 67 מ"ב ולאחר ההמרה (כ-5 דק' מעבד i5) התקבל קובץ במשקל 18.7 מ"ב ללא פגיעה באיכות הנראית לעין!!!
    רק ההמרה לקחה לי הרבה מהמעבד אז שימו לב! בגרסה הבאה אשתדל שתהיה יותר הגבלה במעבד בע"ה

    התוכנה קצת בוסרית בע"ה אני עובד לשפרה ולשכללה עדכונים יובאו כאן בהמשך

    להורדה👇
    כ"ח אייר - גירסה חדשה 1.7
    להוריד כוכביות מהקישור

    TofesTmurato1.7v

    • תיקון באג ותמיכה בהמרה לגרסאות שונות
    • שמירת הגדרות משתמש
    • הוספת מצב יום/לילה
    • שיפור התרגום והוספת שפה😉
    • לא תוקן עדיין הגבלת מעבד

    גרסאות קודמות בספויילר

    TofesTmurato 1v

    קוד פתוח למעוניינים


    לא לצחוק על הטריק של השפה... אני לא מתכנת!

    # -*- coding: utf-8 -*-
    import sys, os, threading, json, tkinter as tk
    from tkinter import filedialog, messagebox
    from PIL import Image
    import customtkinter as ctk
    
    try:
        from moviepy.editor import VideoFileClip, AudioFileClip
    except Exception:
        print("Missing moviepy. Install with: pip install moviepy")
        sys.exit(1)
    
    def resource_path(relative_path):
        try:
            base_path = sys._MEIPASS
        except Exception:
            base_path = os.path.abspath(".")
        return os.path.join(base_path, relative_path)
    
    SETTINGS_FILE = os.path.join(os.getenv('APPDATA', os.path.expanduser('~')), 'tmurato_settings.json')
    
    MEDIA_TYPES = {
        'Video': ['MP4', 'GIF', 'MOV', 'MKV', 'WEBM', 'AVI'],
        'Audio': ['MP3', 'WAV', 'M4A', 'FLAC', 'AAC'],
        'Image': ['JPG', 'JPEG', 'PNG', 'WEBP', 'PDF', 'ICO', 'BMP']
    }
    
    TRANSLATIONS = {
        'עברית': {
            'title': 'תופס תמורתו - ממיר מקצועי', 'select': 'קבצים בחר', 'convert': 'הכל המר',
            'low': 'נמוכה', 'med': 'בינונית', 'high': 'גבוהה', 'original': 'מקור',
            'files_sel': 'נבחרו {} קבצים', 'done': '!בסייעתא דשמייא ההמרה הסתיימה בהצלחה', 
            'type': ':הקובץ סוג', 'fmt': ':פורמט', 'out_folder': 'קבצים שהומרו'
        },
        'English': {
            'title': 'Tofes Tmurato - Converter', 'select': 'Select Files', 'convert': 'Convert All',
            'low': 'Low', 'med': 'Med', 'high': 'High', 'original': 'Original',
            'files_sel': '{} files selected', 'done': 'Done!', 
            'type': 'Type:', 'fmt': 'Format:', 'out_folder': 'Converted files'
        },
        'יידיש': {
            'title': 'תופס תמורתו - מעדיאַ קאָנוערטער', 'select': 'קלייַבן טעקעס', 'convert': 'קאָנווערט אַלץ',
            'low': 'נידעריק', 'med': 'מיטל', 'high': 'הויך', 'original': 'מקור',
            'files_sel': '{} טעקעס אויסגעקליבן', 'done': '!בסייעתא דשמייא געענדיקט הצלחה', 
            'type': 'טיפּ', 'fmt': 'פֿאָרמאַט', 'out_folder': 'קאָנווערטירטע טעקעס'
        },
        'ארמית': {
            'title': 'תופס תמורתו - מחלף זמניא', 'select': 'מניינא גבי', 'convert': 'כולא חלף',
            'low': 'זוטא', 'med': 'ממוצע', 'high': 'רבא', 'original': 'עיקרא',
            'files_sel': 'גבייתא {} מניינין', 'done': '!בסייעתא דשמייא חילוף זמניא אשתלם שפיר', 
            'type': ':זניא', 'fmt': ':טופסא', 'out_folder': 'מניינין דאשתני'
        }
    }
    
    class ConverterApp(ctk.CTk):
        def __init__(self):
            super().__init__()
            self.file_paths = []
            self.settings = self.load_settings()
            
            icon_path = resource_path("icon.ico")
            if os.path.exists(icon_path):
                self.iconbitmap(icon_path)
                self.after(200, lambda: self.iconbitmap(icon_path))
    
            saved_lang = self.settings.get('lang', 'עברית')
            self.lang = saved_lang if saved_lang in TRANSLATIONS else 'עברית'
            
            self.setup_ui()
            self.apply_saved_settings()
    
        def load_settings(self):
            if os.path.exists(SETTINGS_FILE):
                try:
                    with open(SETTINGS_FILE, 'r') as f: return json.load(f)
                except: pass
            return {'lang': 'עברית'}
    
        def save_settings(self):
            self.settings.update({
                'lang': self.lang, 'quality': self.seg_quality.get(), 
                'mtype': self.opt_type.get(), 'fmt': self.opt_fmt.get(), 
                'theme': ctk.get_appearance_mode()
            })
            with open(SETTINGS_FILE, 'w') as f: json.dump(self.settings, f)
    
        def apply_saved_settings(self):
            self.change_lang(self.lang)
            self.opt_type.set(self.settings.get('mtype', 'Video'))
            self.update_formats(self.opt_type.get())
            self.opt_fmt.set(self.settings.get('fmt', 'MP4'))
            if 'theme' in self.settings: ctk.set_appearance_mode(self.settings['theme'])
    
        def setup_ui(self):
            self.geometry("450x650")
            self.title("Tofes Tmurato 1.7")
            
            self.header = ctk.CTkFrame(self, fg_color="transparent")
            self.header.pack(pady=10, fill="x", padx=20)
            
            self.theme_btn = ctk.CTkButton(self.header, text="🌓", width=40, command=self.toggle_theme)
            self.theme_btn.pack(side="left")
            
            self.lang_menu = ctk.CTkOptionMenu(self.header, values=list(TRANSLATIONS.keys()), command=self.change_lang, width=100)
            self.lang_menu.pack(side="right")
    
            self.lbl_title = ctk.CTkLabel(self, text="", font=("Arial", 22, "bold"))
            self.lbl_title.pack(pady=10)
    
            self.btn_select = ctk.CTkButton(self, text="", command=self.select_files)
            self.btn_select.pack(pady=10)
    
            self.lbl_count = ctk.CTkLabel(self, text="", font=("Arial", 14))
            self.lbl_count.pack(pady=5)
    
            self.sett_frame = ctk.CTkFrame(self)
            self.sett_frame.pack(pady=10, padx=30, fill="both")
    
            self.lbl_type = ctk.CTkLabel(self.sett_frame, text="")
            self.lbl_type.pack()
            self.opt_type = ctk.CTkOptionMenu(self.sett_frame, values=list(MEDIA_TYPES.keys()), command=self.update_formats)
            self.opt_type.pack(pady=5)
    
            self.lbl_fmt = ctk.CTkLabel(self.sett_frame, text="")
            self.lbl_fmt.pack()
            self.opt_fmt = ctk.CTkOptionMenu(self.sett_frame, values=[])
            self.opt_fmt.pack(pady=5)
    
            self.seg_quality = ctk.CTkSegmentedButton(self.sett_frame)
            self.seg_quality.pack(pady=20, padx=10, fill="x")
    
            self.progress_bar = ctk.CTkProgressBar(self)
            self.progress_bar.pack(pady=10, padx=50, fill="x")
            self.progress_bar.set(0)
    
            self.btn_convert = ctk.CTkButton(self, text="", fg_color="#28a745", command=self.start_conversion, height=45)
            self.btn_convert.pack(pady=20)
    
        def toggle_theme(self):
            new_mode = "light" if ctk.get_appearance_mode() == "Dark" else "dark"
            ctk.set_appearance_mode(new_mode)
            self.save_settings()
    
        def change_lang(self, v):
            self.lang = v
            t = TRANSLATIONS[v]
            self.lbl_title.configure(text=t['title'])
            self.btn_select.configure(text=t['select'])
            self.lbl_type.configure(text=t['type'])
            self.lbl_fmt.configure(text=t['fmt'])
            self.btn_convert.configure(text=t['convert'])
            
            q_map = {"low": t['low'], "med": t['med'], "high": t['high'], "original": t['original']}
            self.seg_quality.configure(values=list(q_map.values()))
            self.seg_quality.set(t['original'])
            
            self.update_count_label()
            self.save_settings()
    
        def update_count_label(self):
            t = TRANSLATIONS[self.lang]
            self.lbl_count.configure(text=t['files_sel'].format(len(self.file_paths)))
    
        def update_formats(self, mtype):
            self.opt_fmt.configure(values=MEDIA_TYPES[mtype])
            self.opt_fmt.set(MEDIA_TYPES[mtype][0])
            self.save_settings()
    
        def select_files(self):
            paths = filedialog.askopenfilenames()
            if paths:
                self.file_paths = list(paths)
                self.update_count_label()
                
                ext = os.path.splitext(paths[0])[1][1:].upper()
                for mtype, exts in MEDIA_TYPES.items():
                    if ext in exts or (ext == 'JPG' and 'JPEG' in exts):
                        self.opt_type.set(mtype)
                        self.update_formats(mtype)
                        break
    
        def start_conversion(self):
            if not self.file_paths: return
            self.save_settings()
            self.btn_convert.configure(state="disabled")
            threading.Thread(target=self.run_process, daemon=True).start()
    
        def run_process(self):
            for i, path in enumerate(self.file_paths):
                self.convert_logic(path)
                self.progress_bar.set((i + 1) / len(self.file_paths))
            self.btn_convert.configure(state="normal")
            self.after(0, lambda: messagebox.showinfo("V", TRANSLATIONS[self.lang]['done']))
    
        def convert_logic(self, in_p):
            ext = self.opt_fmt.get().lower()
            mtype = self.opt_type.get()
            
            source_dir = os.path.dirname(in_p)
            folder_name = TRANSLATIONS[self.lang]['out_folder']
            target_dir = os.path.join(source_dir, folder_name)
            
            if not os.path.exists(target_dir):
                os.makedirs(target_dir)
                
            out_p = os.path.join(target_dir, f"{os.path.splitext(os.path.basename(in_p))[0]}.{ext}")
            
            # זיהוי רמת האיכות שנבחרה
            t = TRANSLATIONS[self.lang]
            q_val = self.seg_quality.get()
            q_key = next((k for k in ['low', 'med', 'high', 'original'] if t[k] == q_val), 'original')
            
            # הגדרות פרמטרים לפי רמה
            q_cfg = {
                'low':      {'img': 30, 'vid': '600k',  'aud': '64k'},
                'med':      {'img': 60, 'vid': '1500k', 'aud': '128k'},
                'high':     {'img': 85, 'vid': '4000k', 'aud': '256k'},
                'original': {'img': 95, 'vid': None,    'aud': None}
            }[q_key]
    
            try:
                if mtype == 'Image':
                    with Image.open(in_p) as img:
                        if ext in ['jpg', 'jpeg'] and img.mode in ("RGBA", "P"):
                            img = img.convert("RGB")
                        if ext == 'pdf': img.convert("RGB").save(out_p, "PDF")
                        else: img.save(out_p, quality=q_cfg['img'], optimize=True)
                elif mtype == 'Video':
                    with VideoFileClip(in_p) as clip:
                        params = {"codec": "libx264", "logger": None}
                        if q_cfg['vid']: params["bitrate"] = q_cfg['vid']
                        clip.write_videofile(out_p, **params)
                elif mtype == 'Audio':
                    with AudioFileClip(in_p) as clip:
                        params = {"logger": None}
                        if q_cfg['aud']: params["bitrate"] = q_cfg['aud']
                        clip.write_audiofile(out_p, **params)
            except Exception as e: print(f"Error: {e}")
    
    if __name__ == "__main__":
        app = ConverterApp()
        app.mainloop()
    

    צילום מסך

    468d810c-a457-4c4d-bff6-df3eacb0cc60-image.png


    נ.ב. שימו לב לפני הורדת התוכנה אם אתם שולחים תמונות להדפסה וכו' נא לא להשתמש בתוכנה בד"כ זה מוריד באיכות שלשיתוף תמונות במסך הביתי זה לא פוגע אבל בהדפסה זה פוגע לפעמים

    וכמובן כמו תמיד אם יש לכם הערות לשיפור ושידרוג או שיש לכם ידע בתכנות ואתם רוצים לשפר אשמח לשמוע


    תוכנות נוספות
    להורדה "טמו וידאו אוּףף" תוסף למשתמשי נטפרי להפסקת הפעלת וידאו תצוגה מקדימה בטמו

    תוכנה קטנה לשליטה בתוכנות מסך מלא וסגירה בכח

    ש מנותק
    ש מנותק
    שרגא תכנות
    כתב נערך לאחרונה על ידי
    #4

    @AVIVI חסום להורדה בנטפרי, תודה

    י A 2 תגובות תגובה אחרונה
    1
    • ש שרגא תכנות

      @AVIVI חסום להורדה בנטפרי, תודה

      י מנותק
      י מנותק
      יאיר י.
      כתב נערך לאחרונה על ידי
      #5

      @שרגא-תכנות @avivi
      שאבין, מה זה שונה מפורמט פקטורי החינמי?
      והאם יש בזה דברים יותר מיוחדים משם?

      A CSS 0C 2 תגובות תגובה אחרונה
      0
      • ש שרגא תכנות

        @AVIVI חסום להורדה בנטפרי, תודה

        A מנותק
        A מנותק
        AVIVI
        כתב נערך לאחרונה על ידי
        #6

        @שרגא-תכנות נשלח פנייה תודה על העדכון!

        בעזרת השם נעשה ונצליח....

        תגובה 1 תגובה אחרונה
        1
        • י יאיר י.

          @שרגא-תכנות @avivi
          שאבין, מה זה שונה מפורמט פקטורי החינמי?
          והאם יש בזה דברים יותר מיוחדים משם?

          A מנותק
          A מנותק
          AVIVI
          כתב נערך לאחרונה על ידי
          #7

          @יאיר-י.
          בראש ובראשונה רציתי לפתור את זה https://mitmachim.top/topic/75871/מדריך-לכל-המעוניין-התכתבות-בינה-מלאכותית-בנוגע-לפשעי-אווסט-כדאי-לקרוא
          שזה כולל את פורמט פקטורי
          ועוד ועוד חפש בפורום
          דבר שני התוכנה פשוטה יותר מהירה יותר
          אה... וגם ביידיש😉

          בעזרת השם נעשה ונצליח....

          תגובה 1 תגובה אחרונה
          1
          • J מנותק
            J מנותק
            jc324118983
            כתב נערך לאחרונה על ידי
            #8

            האם הוא עושה את זה בצורה חכמה או סתם מקטין את התמונה?

            A תגובה 1 תגובה אחרונה
            0
            • J jc324118983

              האם הוא עושה את זה בצורה חכמה או סתם מקטין את התמונה?

              A מנותק
              A מנותק
              AVIVI
              כתב נערך לאחרונה על ידי
              #9

              @jc324118983 למה אתה מתכוין צורה חכמה?

              בעזרת השם נעשה ונצליח....

              J תגובה 1 תגובה אחרונה
              1
              • A AVIVI

                @jc324118983 למה אתה מתכוין צורה חכמה?

                J מנותק
                J מנותק
                jc324118983
                כתב נערך לאחרונה על ידי jc324118983
                #10

                @AVIVI יש שתי אופציות להקטין קובץ תמונה לדוגמה יש אופציה פשוט להוריד את כמות הפיקסלים (להקטין את התמונה) ויש בצורה חכמה שאני לא מבין איך זה עובד אבל מוריד משמעותי מבלי לפגוע באיכות

                A תגובה 1 תגובה אחרונה
                0
                • J jc324118983

                  @AVIVI יש שתי אופציות להקטין קובץ תמונה לדוגמה יש אופציה פשוט להוריד את כמות הפיקסלים (להקטין את התמונה) ויש בצורה חכמה שאני לא מבין איך זה עובד אבל מוריד משמעותי מבלי לפגוע באיכות

                  A מנותק
                  A מנותק
                  AVIVI
                  כתב נערך לאחרונה על ידי
                  #11

                  @jc324118983 לדעתי זה 'בצורה חכמה' או איך שתקרא לזה
                  הקטנתי קובץ של 6.8 מ"ב ל 334 ק"ב וכמעט שלא ראיתי הבדל
                  אין לי כרגע תמונה אם תרצה תעלה לכאן ואחזיר לך אותה לאחר המרה

                  בעזרת השם נעשה ונצליח....

                  תגובה 1 תגובה אחרונה
                  2
                  • י יאיר י.

                    @שרגא-תכנות @avivi
                    שאבין, מה זה שונה מפורמט פקטורי החינמי?
                    והאם יש בזה דברים יותר מיוחדים משם?

                    CSS 0C מנותק
                    CSS 0C מנותק
                    CSS 0
                    כתב נערך לאחרונה על ידי CSS 0
                    #12

                    @יאיר-י.

                    זה כבר נהיה מעצבן, מישהו מעלה תוכנה ומייד השאלה הראשונה זה - "מה זה שונה מ..." התשובה היא פשוטה, לא שונה בכלום, לא רוצה אל תשתמש!

                    @jc324118983 כתב בלהורדה | 'תופס תמורתו' ממיר ומקטין קבצים קל, מהיר, וחינמי!💥:

                    יש בצורה חכמה שאני לא מבין איך זה עובד

                    @AVIVI כתב בלהורדה | 'תופס תמורתו' ממיר ומקטין קבצים קל, מהיר, וחינמי!💥:

                    לדעתי זה 'בצורה חכמה'

                    על מנת שזה יהיה בצורה חכמה לרוב צריך שיהיה מנוע AI שיסתכל על התמונה ולא ימחק סתם פיקסלים אלא ימחק את הפיקסלים בצורה שווה לכל פריט ככה שהוא לא סתם מקטין את הפיקסלים אלא מקטין את הדברים בתמונה ומאליו את הגודל והפיקסלים
                    התוכנה הזו ככל הנראה לא עובדת בצורה שלא מורידה איכות,

                    מה שבטוח, בטוח - התוכנה עצמה איכותית ביותר 😉

                    האקר בשחור

                    א י 2 תגובות תגובה אחרונה
                    2
                    • CSS 0C CSS 0

                      @יאיר-י.

                      זה כבר נהיה מעצבן, מישהו מעלה תוכנה ומייד השאלה הראשונה זה - "מה זה שונה מ..." התשובה היא פשוטה, לא שונה בכלום, לא רוצה אל תשתמש!

                      @jc324118983 כתב בלהורדה | 'תופס תמורתו' ממיר ומקטין קבצים קל, מהיר, וחינמי!💥:

                      יש בצורה חכמה שאני לא מבין איך זה עובד

                      @AVIVI כתב בלהורדה | 'תופס תמורתו' ממיר ומקטין קבצים קל, מהיר, וחינמי!💥:

                      לדעתי זה 'בצורה חכמה'

                      על מנת שזה יהיה בצורה חכמה לרוב צריך שיהיה מנוע AI שיסתכל על התמונה ולא ימחק סתם פיקסלים אלא ימחק את הפיקסלים בצורה שווה לכל פריט ככה שהוא לא סתם מקטין את הפיקסלים אלא מקטין את הדברים בתמונה ומאליו את הגודל והפיקסלים
                      התוכנה הזו ככל הנראה לא עובדת בצורה שלא מורידה איכות,

                      מה שבטוח, בטוח - התוכנה עצמה איכותית ביותר 😉

                      א מנותק
                      א מנותק
                      ארי
                      כתב נערך לאחרונה על ידי
                      #13

                      @CSS-0 לא קשור לAI זה קיים עוד לפניו
                      תראה לדוגמה
                      Squoosh — מנובמבר 2018
                      TinyPNG — מ2013/2014
                      Caesium — מ2010/2015

                      CSS 0C תגובה 1 תגובה אחרונה
                      0
                      • א ארי

                        @CSS-0 לא קשור לAI זה קיים עוד לפניו
                        תראה לדוגמה
                        Squoosh — מנובמבר 2018
                        TinyPNG — מ2013/2014
                        Caesium — מ2010/2015

                        CSS 0C מנותק
                        CSS 0C מנותק
                        CSS 0
                        כתב נערך לאחרונה על ידי CSS 0
                        #14

                        @ארי כתב בלהורדה | 'תופס תמורתו' ממיר ומקטין קבצים קל, מהיר, וחינמי!💥:

                        א קשור לAI זה קיים עוד לפניו

                        אתה מדבר על AI של צ'אט, AI של הגדלת הקטנת תמונות, זיהוי פנים, זיהוי דיבור וכ"ו היו לפני

                        Deep Blue של IBM ניצח את Garry Kasparov בשחמט ב־1997...

                        האקר בשחור

                        תגובה 1 תגובה אחרונה
                        0
                        • A AVIVI התייחס לנושא זה
                        • A מנותק
                          A מנותק
                          AVIVI
                          כתב נערך לאחרונה על ידי AVIVI
                          #15

                          בס"ד
                          כ"ח אייר - גירסה חדשה 1.7
                          פירוט למעלה

                          בעזרת השם נעשה ונצליח....

                          H תגובה 1 תגובה אחרונה
                          0
                          • CSS 0C CSS 0

                            @יאיר-י.

                            זה כבר נהיה מעצבן, מישהו מעלה תוכנה ומייד השאלה הראשונה זה - "מה זה שונה מ..." התשובה היא פשוטה, לא שונה בכלום, לא רוצה אל תשתמש!

                            @jc324118983 כתב בלהורדה | 'תופס תמורתו' ממיר ומקטין קבצים קל, מהיר, וחינמי!💥:

                            יש בצורה חכמה שאני לא מבין איך זה עובד

                            @AVIVI כתב בלהורדה | 'תופס תמורתו' ממיר ומקטין קבצים קל, מהיר, וחינמי!💥:

                            לדעתי זה 'בצורה חכמה'

                            על מנת שזה יהיה בצורה חכמה לרוב צריך שיהיה מנוע AI שיסתכל על התמונה ולא ימחק סתם פיקסלים אלא ימחק את הפיקסלים בצורה שווה לכל פריט ככה שהוא לא סתם מקטין את הפיקסלים אלא מקטין את הדברים בתמונה ומאליו את הגודל והפיקסלים
                            התוכנה הזו ככל הנראה לא עובדת בצורה שלא מורידה איכות,

                            מה שבטוח, בטוח - התוכנה עצמה איכותית ביותר 😉

                            י מנותק
                            י מנותק
                            יאיר י.
                            כתב נערך לאחרונה על ידי יאיר י.
                            #16

                            @CSS-0 כתב בלהורדה | 'תופס תמורתו' ממיר ומקטין קבצים קל, מהיר, וחינמי!💥:

                            זה כבר נהיה מעצבן, מישהו מעלה תוכנה ומייד השאלה הראשונה זה - "מה זה שונה מ..." התשובה היא פשוטה, לא שונה בכלום, לא רוצה אל תשתמש!

                            לא הבנתי על מה אתה מדבר
                            אני, כמו כל אדם, מעוניין להבין מה החידוש שהוא הביא כאן שלא היה קיים בשוק עד עכשיו
                            אווילי לחשוב שבן אדם עבד על משהו, ומבזבז מזמנו על דבר שלא מקדם אף אדם, בשום דבר!!

                            כל אדם שבונה תוכנה או משהו בסגנון התכוון לשפר את המהירות, לתקן פגם קיים בתוכנה ההיא, לשדרג מראה וכו'

                            בתקווה להבנה

                            תגובה 1 תגובה אחרונה
                            1
                            • A AVIVI

                              בס"ד
                              כ"ח אייר - גירסה חדשה 1.7
                              פירוט למעלה

                              H מנותק
                              H מנותק
                              HGEC HARTK
                              כתב נערך לאחרונה על ידי
                              #17

                              @AVIVI
                              גירסת 1.7 חסום בנטפרי
                              בתודה מראש

                              A תגובה 1 תגובה אחרונה
                              0
                              • ק מנותק
                                ק מנותק
                                קפטן מרשמלו
                                כתב נערך לאחרונה על ידי
                                #18

                                לא צריך בינה מלאכותית בשביל לכווץ קבצים בלי להוריד להם כמעט את האיכות

                                יש כל מיני דרכים לעשות את זה לתמונות
                                אחת מהם היא במקום לכתוב בזיכרון מה הערך של כל פיקסל בתמונה כותבים את ההפרשים ביניהם ובגלל שבתמונות בדרך כלל אין הפרשים גדולים במקום שכל פיקסל יתפוס בזיכרון נגיד שלוש ספרות שמייצגות בין אחד לאלף הוא השתמש בשתי ספרות שמייצגות בין אחד ל-100 כל
                                במקום בתמונה שבו היה הפרש גדול יותר למשל אם היה משהו שחור על רקע לבן אז הקו ביניהם יהיה יותר מטושטש אבל חוץ מזה כל התמונה תשמור על אותה איכות

                                תגובה 1 תגובה אחרונה
                                1
                                • H HGEC HARTK

                                  @AVIVI
                                  גירסת 1.7 חסום בנטפרי
                                  בתודה מראש

                                  A מנותק
                                  A מנותק
                                  AVIVI
                                  כתב נערך לאחרונה על ידי
                                  #19

                                  @HGEC-HARTK נשלח לבדיקה

                                  בעזרת השם נעשה ונצליח....

                                  א תגובה 1 תגובה אחרונה
                                  0
                                  • A AVIVI

                                    בס"ד

                                    הדגשה כרגיל- טוב.. מי שלא אוהב תוכנות שנוצרו עם AI נא לדלג לשרשור אחר שכוייח מראש!

                                    תופס תמורתו

                                    כרגיל כל דבר טוב מתחיל כי נמאס מה שהיה עד עכשיו (מי הזיז את ה(ג)בינה שלי?)

                                    בס"ד עלה בדעתי ליצור תוכנה להמרת קבצים ע"י הגבינה המלאכותית
                                    ובמיוחד להקטנת קבצים (שם החל הרעיון... נמאס לי להעלות חמש תמונות למייל במשך שעה רק בגלל שהמצלמה שלי טובה ב"ה...)
                                    תמיד יש לנו את הוידאו ששוקל טון ואת התמונה של הנוף ששוקלת 15 מ"ב ואת השיר שתופס הרבה מקום
                                    לשם כך ולעוד דברים נוספים נועד תופס תמורתו
                                    התוכנה להמרת קבצים בשניות שבע"ה תקל לנו מעט את החיים
                                    התוכנה כרגע ממירה וידאו אודיו ותמונה
                                    פותחים את התוכנה, בוחרים את הקובץ והיפ הופ הקובץ נחתך למחצה שליש ורביע לפי בחירתכם!
                                    הקבצים נשמרים בתקייה חדשה בשם 'קבצים_שהומרו' או בכל שפה אחרת שבחרתם כשפת התוכנה
                                    התוכנה תומכת בפורמטים המצויים
                                    התוכנה תומכת גם בהמרת תמונה ל- pdf ובהמרת וידאו לקובץ gif

                                    הערה חשובה לגבי הוידאו: כרגע לוקח קצת הרבה זמן לתוכנה להמיר קבצי וידאו אולם התוצאה שווה ככל שבדקתי!
                                    המרתי איתה קובץ וידאו במשקל 67 מ"ב ולאחר ההמרה (כ-5 דק' מעבד i5) התקבל קובץ במשקל 18.7 מ"ב ללא פגיעה באיכות הנראית לעין!!!
                                    רק ההמרה לקחה לי הרבה מהמעבד אז שימו לב! בגרסה הבאה אשתדל שתהיה יותר הגבלה במעבד בע"ה

                                    התוכנה קצת בוסרית בע"ה אני עובד לשפרה ולשכללה עדכונים יובאו כאן בהמשך

                                    להורדה👇
                                    כ"ח אייר - גירסה חדשה 1.7
                                    להוריד כוכביות מהקישור

                                    TofesTmurato1.7v

                                    • תיקון באג ותמיכה בהמרה לגרסאות שונות
                                    • שמירת הגדרות משתמש
                                    • הוספת מצב יום/לילה
                                    • שיפור התרגום והוספת שפה😉
                                    • לא תוקן עדיין הגבלת מעבד

                                    גרסאות קודמות בספויילר

                                    TofesTmurato 1v

                                    קוד פתוח למעוניינים


                                    לא לצחוק על הטריק של השפה... אני לא מתכנת!

                                    # -*- coding: utf-8 -*-
                                    import sys, os, threading, json, tkinter as tk
                                    from tkinter import filedialog, messagebox
                                    from PIL import Image
                                    import customtkinter as ctk
                                    
                                    try:
                                        from moviepy.editor import VideoFileClip, AudioFileClip
                                    except Exception:
                                        print("Missing moviepy. Install with: pip install moviepy")
                                        sys.exit(1)
                                    
                                    def resource_path(relative_path):
                                        try:
                                            base_path = sys._MEIPASS
                                        except Exception:
                                            base_path = os.path.abspath(".")
                                        return os.path.join(base_path, relative_path)
                                    
                                    SETTINGS_FILE = os.path.join(os.getenv('APPDATA', os.path.expanduser('~')), 'tmurato_settings.json')
                                    
                                    MEDIA_TYPES = {
                                        'Video': ['MP4', 'GIF', 'MOV', 'MKV', 'WEBM', 'AVI'],
                                        'Audio': ['MP3', 'WAV', 'M4A', 'FLAC', 'AAC'],
                                        'Image': ['JPG', 'JPEG', 'PNG', 'WEBP', 'PDF', 'ICO', 'BMP']
                                    }
                                    
                                    TRANSLATIONS = {
                                        'עברית': {
                                            'title': 'תופס תמורתו - ממיר מקצועי', 'select': 'קבצים בחר', 'convert': 'הכל המר',
                                            'low': 'נמוכה', 'med': 'בינונית', 'high': 'גבוהה', 'original': 'מקור',
                                            'files_sel': 'נבחרו {} קבצים', 'done': '!בסייעתא דשמייא ההמרה הסתיימה בהצלחה', 
                                            'type': ':הקובץ סוג', 'fmt': ':פורמט', 'out_folder': 'קבצים שהומרו'
                                        },
                                        'English': {
                                            'title': 'Tofes Tmurato - Converter', 'select': 'Select Files', 'convert': 'Convert All',
                                            'low': 'Low', 'med': 'Med', 'high': 'High', 'original': 'Original',
                                            'files_sel': '{} files selected', 'done': 'Done!', 
                                            'type': 'Type:', 'fmt': 'Format:', 'out_folder': 'Converted files'
                                        },
                                        'יידיש': {
                                            'title': 'תופס תמורתו - מעדיאַ קאָנוערטער', 'select': 'קלייַבן טעקעס', 'convert': 'קאָנווערט אַלץ',
                                            'low': 'נידעריק', 'med': 'מיטל', 'high': 'הויך', 'original': 'מקור',
                                            'files_sel': '{} טעקעס אויסגעקליבן', 'done': '!בסייעתא דשמייא געענדיקט הצלחה', 
                                            'type': 'טיפּ', 'fmt': 'פֿאָרמאַט', 'out_folder': 'קאָנווערטירטע טעקעס'
                                        },
                                        'ארמית': {
                                            'title': 'תופס תמורתו - מחלף זמניא', 'select': 'מניינא גבי', 'convert': 'כולא חלף',
                                            'low': 'זוטא', 'med': 'ממוצע', 'high': 'רבא', 'original': 'עיקרא',
                                            'files_sel': 'גבייתא {} מניינין', 'done': '!בסייעתא דשמייא חילוף זמניא אשתלם שפיר', 
                                            'type': ':זניא', 'fmt': ':טופסא', 'out_folder': 'מניינין דאשתני'
                                        }
                                    }
                                    
                                    class ConverterApp(ctk.CTk):
                                        def __init__(self):
                                            super().__init__()
                                            self.file_paths = []
                                            self.settings = self.load_settings()
                                            
                                            icon_path = resource_path("icon.ico")
                                            if os.path.exists(icon_path):
                                                self.iconbitmap(icon_path)
                                                self.after(200, lambda: self.iconbitmap(icon_path))
                                    
                                            saved_lang = self.settings.get('lang', 'עברית')
                                            self.lang = saved_lang if saved_lang in TRANSLATIONS else 'עברית'
                                            
                                            self.setup_ui()
                                            self.apply_saved_settings()
                                    
                                        def load_settings(self):
                                            if os.path.exists(SETTINGS_FILE):
                                                try:
                                                    with open(SETTINGS_FILE, 'r') as f: return json.load(f)
                                                except: pass
                                            return {'lang': 'עברית'}
                                    
                                        def save_settings(self):
                                            self.settings.update({
                                                'lang': self.lang, 'quality': self.seg_quality.get(), 
                                                'mtype': self.opt_type.get(), 'fmt': self.opt_fmt.get(), 
                                                'theme': ctk.get_appearance_mode()
                                            })
                                            with open(SETTINGS_FILE, 'w') as f: json.dump(self.settings, f)
                                    
                                        def apply_saved_settings(self):
                                            self.change_lang(self.lang)
                                            self.opt_type.set(self.settings.get('mtype', 'Video'))
                                            self.update_formats(self.opt_type.get())
                                            self.opt_fmt.set(self.settings.get('fmt', 'MP4'))
                                            if 'theme' in self.settings: ctk.set_appearance_mode(self.settings['theme'])
                                    
                                        def setup_ui(self):
                                            self.geometry("450x650")
                                            self.title("Tofes Tmurato 1.7")
                                            
                                            self.header = ctk.CTkFrame(self, fg_color="transparent")
                                            self.header.pack(pady=10, fill="x", padx=20)
                                            
                                            self.theme_btn = ctk.CTkButton(self.header, text="🌓", width=40, command=self.toggle_theme)
                                            self.theme_btn.pack(side="left")
                                            
                                            self.lang_menu = ctk.CTkOptionMenu(self.header, values=list(TRANSLATIONS.keys()), command=self.change_lang, width=100)
                                            self.lang_menu.pack(side="right")
                                    
                                            self.lbl_title = ctk.CTkLabel(self, text="", font=("Arial", 22, "bold"))
                                            self.lbl_title.pack(pady=10)
                                    
                                            self.btn_select = ctk.CTkButton(self, text="", command=self.select_files)
                                            self.btn_select.pack(pady=10)
                                    
                                            self.lbl_count = ctk.CTkLabel(self, text="", font=("Arial", 14))
                                            self.lbl_count.pack(pady=5)
                                    
                                            self.sett_frame = ctk.CTkFrame(self)
                                            self.sett_frame.pack(pady=10, padx=30, fill="both")
                                    
                                            self.lbl_type = ctk.CTkLabel(self.sett_frame, text="")
                                            self.lbl_type.pack()
                                            self.opt_type = ctk.CTkOptionMenu(self.sett_frame, values=list(MEDIA_TYPES.keys()), command=self.update_formats)
                                            self.opt_type.pack(pady=5)
                                    
                                            self.lbl_fmt = ctk.CTkLabel(self.sett_frame, text="")
                                            self.lbl_fmt.pack()
                                            self.opt_fmt = ctk.CTkOptionMenu(self.sett_frame, values=[])
                                            self.opt_fmt.pack(pady=5)
                                    
                                            self.seg_quality = ctk.CTkSegmentedButton(self.sett_frame)
                                            self.seg_quality.pack(pady=20, padx=10, fill="x")
                                    
                                            self.progress_bar = ctk.CTkProgressBar(self)
                                            self.progress_bar.pack(pady=10, padx=50, fill="x")
                                            self.progress_bar.set(0)
                                    
                                            self.btn_convert = ctk.CTkButton(self, text="", fg_color="#28a745", command=self.start_conversion, height=45)
                                            self.btn_convert.pack(pady=20)
                                    
                                        def toggle_theme(self):
                                            new_mode = "light" if ctk.get_appearance_mode() == "Dark" else "dark"
                                            ctk.set_appearance_mode(new_mode)
                                            self.save_settings()
                                    
                                        def change_lang(self, v):
                                            self.lang = v
                                            t = TRANSLATIONS[v]
                                            self.lbl_title.configure(text=t['title'])
                                            self.btn_select.configure(text=t['select'])
                                            self.lbl_type.configure(text=t['type'])
                                            self.lbl_fmt.configure(text=t['fmt'])
                                            self.btn_convert.configure(text=t['convert'])
                                            
                                            q_map = {"low": t['low'], "med": t['med'], "high": t['high'], "original": t['original']}
                                            self.seg_quality.configure(values=list(q_map.values()))
                                            self.seg_quality.set(t['original'])
                                            
                                            self.update_count_label()
                                            self.save_settings()
                                    
                                        def update_count_label(self):
                                            t = TRANSLATIONS[self.lang]
                                            self.lbl_count.configure(text=t['files_sel'].format(len(self.file_paths)))
                                    
                                        def update_formats(self, mtype):
                                            self.opt_fmt.configure(values=MEDIA_TYPES[mtype])
                                            self.opt_fmt.set(MEDIA_TYPES[mtype][0])
                                            self.save_settings()
                                    
                                        def select_files(self):
                                            paths = filedialog.askopenfilenames()
                                            if paths:
                                                self.file_paths = list(paths)
                                                self.update_count_label()
                                                
                                                ext = os.path.splitext(paths[0])[1][1:].upper()
                                                for mtype, exts in MEDIA_TYPES.items():
                                                    if ext in exts or (ext == 'JPG' and 'JPEG' in exts):
                                                        self.opt_type.set(mtype)
                                                        self.update_formats(mtype)
                                                        break
                                    
                                        def start_conversion(self):
                                            if not self.file_paths: return
                                            self.save_settings()
                                            self.btn_convert.configure(state="disabled")
                                            threading.Thread(target=self.run_process, daemon=True).start()
                                    
                                        def run_process(self):
                                            for i, path in enumerate(self.file_paths):
                                                self.convert_logic(path)
                                                self.progress_bar.set((i + 1) / len(self.file_paths))
                                            self.btn_convert.configure(state="normal")
                                            self.after(0, lambda: messagebox.showinfo("V", TRANSLATIONS[self.lang]['done']))
                                    
                                        def convert_logic(self, in_p):
                                            ext = self.opt_fmt.get().lower()
                                            mtype = self.opt_type.get()
                                            
                                            source_dir = os.path.dirname(in_p)
                                            folder_name = TRANSLATIONS[self.lang]['out_folder']
                                            target_dir = os.path.join(source_dir, folder_name)
                                            
                                            if not os.path.exists(target_dir):
                                                os.makedirs(target_dir)
                                                
                                            out_p = os.path.join(target_dir, f"{os.path.splitext(os.path.basename(in_p))[0]}.{ext}")
                                            
                                            # זיהוי רמת האיכות שנבחרה
                                            t = TRANSLATIONS[self.lang]
                                            q_val = self.seg_quality.get()
                                            q_key = next((k for k in ['low', 'med', 'high', 'original'] if t[k] == q_val), 'original')
                                            
                                            # הגדרות פרמטרים לפי רמה
                                            q_cfg = {
                                                'low':      {'img': 30, 'vid': '600k',  'aud': '64k'},
                                                'med':      {'img': 60, 'vid': '1500k', 'aud': '128k'},
                                                'high':     {'img': 85, 'vid': '4000k', 'aud': '256k'},
                                                'original': {'img': 95, 'vid': None,    'aud': None}
                                            }[q_key]
                                    
                                            try:
                                                if mtype == 'Image':
                                                    with Image.open(in_p) as img:
                                                        if ext in ['jpg', 'jpeg'] and img.mode in ("RGBA", "P"):
                                                            img = img.convert("RGB")
                                                        if ext == 'pdf': img.convert("RGB").save(out_p, "PDF")
                                                        else: img.save(out_p, quality=q_cfg['img'], optimize=True)
                                                elif mtype == 'Video':
                                                    with VideoFileClip(in_p) as clip:
                                                        params = {"codec": "libx264", "logger": None}
                                                        if q_cfg['vid']: params["bitrate"] = q_cfg['vid']
                                                        clip.write_videofile(out_p, **params)
                                                elif mtype == 'Audio':
                                                    with AudioFileClip(in_p) as clip:
                                                        params = {"logger": None}
                                                        if q_cfg['aud']: params["bitrate"] = q_cfg['aud']
                                                        clip.write_audiofile(out_p, **params)
                                            except Exception as e: print(f"Error: {e}")
                                    
                                    if __name__ == "__main__":
                                        app = ConverterApp()
                                        app.mainloop()
                                    

                                    צילום מסך

                                    468d810c-a457-4c4d-bff6-df3eacb0cc60-image.png


                                    נ.ב. שימו לב לפני הורדת התוכנה אם אתם שולחים תמונות להדפסה וכו' נא לא להשתמש בתוכנה בד"כ זה מוריד באיכות שלשיתוף תמונות במסך הביתי זה לא פוגע אבל בהדפסה זה פוגע לפעמים

                                    וכמובן כמו תמיד אם יש לכם הערות לשיפור ושידרוג או שיש לכם ידע בתכנות ואתם רוצים לשפר אשמח לשמוע


                                    תוכנות נוספות
                                    להורדה "טמו וידאו אוּףף" תוסף למשתמשי נטפרי להפסקת הפעלת וידאו תצוגה מקדימה בטמו

                                    תוכנה קטנה לשליטה בתוכנות מסך מלא וסגירה בכח

                                    EBAE מנותק
                                    EBAE מנותק
                                    EBA
                                    מדריכים
                                    כתב נערך לאחרונה על ידי
                                    #20

                                    @AVIVI לפי השם כבר הייתי בטוח שזו תוכנה של @es0583292679 ...

                                    התקנת מולטימדיות, חסימות וסימים מוזלים
                                    050-4133851

                                    A תגובה 1 תגובה אחרונה
                                    3
                                    • EBAE EBA

                                      @AVIVI לפי השם כבר הייתי בטוח שזו תוכנה של @es0583292679 ...

                                      A מנותק
                                      A מנותק
                                      AVIVI
                                      כתב נערך לאחרונה על ידי AVIVI
                                      #21

                                      @EBA

                                      לא חושב לנסות לחקות את אליעזר סילבר @es0583292679 האלוף!..
                                      רעיון השם היה משום שנמאס לי שמתביישים במושגים שיש לנו
                                      קצת ויגבה ליבו!
                                      ואם פיתחתי תוכנה לציבור יראי ה' למה ששם התוכנה לא יתחבר אליהם?
                                      אה.. וגם השפה החדשה..

                                      בעזרת השם נעשה ונצליח....

                                      תגובה 1 תגובה אחרונה
                                      2
                                      • A AVIVI

                                        @HGEC-HARTK נשלח לבדיקה

                                        א מנותק
                                        א מנותק
                                        אשריך עליך
                                        כתב נערך לאחרונה על ידי
                                        #22

                                        @AVIVI

                                        פעם הבאה פשוט תפרסם את הקישור עם כוכביות (כמו שכולם עושים) ואז יצטרכו להוריד את הכוכביות
                                        וזה לא ייחסם ע"י נטפרי

                                        A תגובה 1 תגובה אחרונה
                                        1
                                        • א אשריך עליך

                                          @AVIVI

                                          פעם הבאה פשוט תפרסם את הקישור עם כוכביות (כמו שכולם עושים) ואז יצטרכו להוריד את הכוכביות
                                          וזה לא ייחסם ע"י נטפרי

                                          A מנותק
                                          A מנותק
                                          AVIVI
                                          כתב נערך לאחרונה על ידי
                                          #23

                                          @אשריך-עליך תודה שהזכרתני!
                                          עודכן!

                                          בעזרת השם נעשה ונצליח....

                                          תגובה 1 תגובה אחרונה
                                          1

                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • חוקי הפורום
                                          • פופולרי
                                          • לא נפתר
                                          • משתמשים
                                          • חיפוש גוגל בפורום
                                          • צור קשר