Bildgröße in Bytes aus Speicher

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

Hallo Leute,

ich erstelle einen Screenshot, und speichere das Bild als .jpg Datei auf die Festplatte.
Jetzt ist es einfach die Dateigröße in Bytes zurückzugeben. Wen ich z.b 1000 Screenshots erstelle, dauert das speichern zu lange. Und das Abfragen nach der Dateigröße in Bytes auch. Ist es möglich nachdem man einen Screenshot gemacht hat, die Bildgröße in Bytes direkt aus dem Speicher zu laden. Ohne den Screenshot zuerst abzuspeichern.
Ich möchte nur bestimmte Screenshots die eine bestimmte Dateigröße in Bytes haben abspeichern.

Code: Alles auswählen

import pyautogui
im = pyautogui.screenshot(region=(506,752, 91, 90))
im.save(r'C:\Temp\Test.jpg')
Bis die Tage...
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Ich bin mal so frei dein Unterfangen anzuzweifeln. Wenn du so vorgehst, dann speicherst du ein jpg. Soweit ich weiß ist das ein komprimiertes Dateiformat. Von daher ist die Größe der Datei kein belastbarer Wert.

Ansonsten gibt .screenshot() ein Image aus dem Pillow-Modul zurück. Du solltest dich mit dessen Dokumentation befassen.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das sind Pillow-Image-Objekte, und die koenntest du zB in ein io.BytesIO-Objekt speichern. Und dessen Groesse dann bestimmen.

Allerdings klingt das ganze erstmal ziemlich unglaubwuerdig. Da du nur etwa 60 Screenshots / Sekunde machen kannst, und wiederum diese kleinen Bildausschnitte sehr wenig Speicher als JPG brauchen, ist hier ganz bestimmt nicht die Platten-IO der Flaschenhals. Klingt also wie ueblich nach einem XY-Problem. Was ist also dein wirkliches Anliegen?
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

__deets__ hat geschrieben: Freitag 8. April 2022, 14:45 Das sind Pillow-Image-Objekte, und die koenntest du zB in ein io.BytesIO-Objekt speichern. Und dessen Groesse dann bestimmen.

Da du nur etwa 60 Screenshots / Sekunde machen kannst, ist hier ganz bestimmt nicht die Platten-IO der Flaschenhals. Klingt also wie ueblich nach einem XY-Problem. Was ist also dein wirkliches Anliegen?
Hallo,

ich möchte von Hintergrundbildern die sehr bunt sind, per Zufall an bestimmten Positionen Screenshots machen.
Die Hintergrundbilder sind sehr Farbenfroh. Und dann nur bestimmte Screenshots die eine bestimmte Größe in Bytes haben verwenden, um eine neues Hintergrundbild zu machen. Bei 1000 screenshots ist nur ein Beispiel, dauert das eben lange. Mit dieser Methode kann ich z.b dunkle Bereiche des Bildes ausschließen.

Bis die Tage...
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

sparrow hat geschrieben: Freitag 8. April 2022, 14:37 Wenn du so vorgehst, dann speicherst du ein jpg. Soweit ich weiß ist das ein komprimiertes Dateiformat. Von daher ist die Größe der Datei kein belastbarer Wert.
Ansonsten gibt .screenshot() ein Image aus dem Pillow-Modul zurück. Du solltest dich mit dessen Dokumentation befassen.
Hallo,

das hört sich gut an. Danke das hilft mir weiter.

Bis die Tage...
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das klingt danach, als ob du die Bildgroesse als Ersatz fuer Komplexitaet im Bild nimmst. Das wuerde man normalerweise mit Mitteln der OpenCV machen.
Antworten