Bilder und Videos in Programm einbinden

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.
xXSkyWalkerXx1
User
Beiträge: 148
Registriert: Mittwoch 27. Juni 2018, 17:39

Dienstag 10. Juli 2018, 23:05

Abend! :D

Also ich habe nun endlich mein Script.Game.Interface geschrieben - funktioniert: Skript ist änderbar und Datei wird erzeugt und so. ^^
Jedenfalls also so die Grundlage.
Doch ich würde gerne Bilder bzw Videos einfügen,doch so, dass man diese nicht am PC oder Internet haben muss.
Edliche Programme die z.b. eine ".exe" sind , haben Bilder integriert, ohne, dass man sie irgendwo auf'm PC findet oder Internet braucht, also im Programm implementiert.
Weiß nur nicht wie das gehen soll?

Mit freundlichen Grüßen,
xXSkyWalkerXx1
__deets__
User
Beiträge: 3500
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mittwoch 11. Juli 2018, 03:45

Mit Python geht es nicht. Selbst wenn man da eine EXE erstellt mit py2exe und Co ist das immer noch ein Sack von Dateien. Meistens pyc files mit Python Code drin, aber natürlich auch alle möglichen anderen Dateien, die man braucht. Die werden dann einfach relativ zum Code abgelegt und vom Code dann einfach benutzt.

Theoretisch kannst du binäre Daten auch in ein Python Modul kodieren, und dann statt Dateien Code importieren. Wirklich dolle ist das nicht, weil man je nach GUI Library dann doch wieder eine externe Datei daraus machen muss. Ist also eher augenwischerei.
Sirius3
User
Beiträge: 8430
Registriert: Sonntag 21. Oktober 2012, 17:20

Mittwoch 11. Juli 2018, 08:56

Am PC mußt Du sie so oder so haben, ob sie nun in einer ZIP-Datei gepackt sind, oder getrennt.
xXSkyWalkerXx1
User
Beiträge: 148
Registriert: Mittwoch 27. Juni 2018, 17:39

Mittwoch 11. Juli 2018, 14:11

Also kann ich nur Programm in ner Zip stecken (oder wo auch immer) und die Bilder/Videos ebenfalls in diese Zip.
So kann ich das Programm wenigstens verschicken.
Benutzeravatar
ThomasL
User
Beiträge: 303
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Mittwoch 11. Juli 2018, 14:17

__deets__ hat geschrieben:
Mittwoch 11. Juli 2018, 03:45
Theoretisch kannst du binäre Daten auch in ein Python Modul kodieren, und dann statt Dateien Code importieren.
Nicht nur theoretisch, imho in Python wohl die einzige Möglichkeit (lasse mich gerne vom Gegenteil überzeugen).
Hier https://github.com/robertgallup/bmp2hex bmp2hex - Graphics bitmap file to C-style hex converter
hat jemand das für C-Style Code gemacht.
Kannst du eventuell so umwandeln, dass ein Python-Modul dabei rauskommt.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
__deets__
User
Beiträge: 3500
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mittwoch 11. Juli 2018, 14:38

Wieso die einzige Möglichkeit? Ich habe doch schon beschrieben, wie man es anders machen kann. Einfach Dateien daneben legen. Der TE wünscht sich (aus dem Kontext seiner anderen Posts heraus) ein stand-alone Exexcutable. Das gibt es für Python nicht. Man kann zwar allen Code und alle Daten in ein riesen Modul packen. Nur fehlt da ja dann der Interpreter. Will man sein Programm also vernünftig ausliefern, greift man eh zu einem Installer, der gleich alles mitliefert. Die einzige Alternative wäre ein statisch gelinktes EXE mit allem Python
Code und Daten darin. Aber das existiert mE nicht, und aus der Erfahrung einen Python Interpreter eingebettet an unsere Kunden auszuliefern kann ich auch nur davon abraten, das basteln zu wollen. Den TE überfordert es allemal.
xXSkyWalkerXx1
User
Beiträge: 148
Registriert: Mittwoch 27. Juni 2018, 17:39

Mittwoch 11. Juli 2018, 15:06

Ich denke mal, ich werds halt einfach machen: Programm in eine ZIP packen und in der gleichen ZIP die ganzen Bilder/Videos.
Benutzeravatar
__blackjack__
User
Beiträge: 1230
Registriert: Samstag 2. Juni 2018, 10:21

Mittwoch 11. Juli 2018, 15:12

Manche GUI-Toolkits können auch Bilder in Formaten wie X PixMaps direkt aus dem Programm ”konsumieren”. Hier ein Beispiel das ich neulich in einem anderen Forum gepostet hatte (eine Portierung eines C++-Beispielprogramms für FLTK nach Python und Qt4):

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf-8
from __future__ import absolute_import, division, print_function
import sys
from PyQt4 import uic
from PyQt4.QtCore import QSize
from PyQt4.QtGui import (
    QApplication, QIcon, QListWidgetItem, QMessageBox, QPixmap,
)

CAT_XPM = [
    '50 34 4 1',
    '  c black',
    'o c #ff9900',
    '@ c #ffffff',
    '# c None',
    '##################################################',
    '###      ##############################       ####',
    '### ooooo  ###########################  ooooo ####',
    '### oo  oo  #########################  oo  oo ####',
    '### oo   oo  #######################  oo   oo ####',
    '### oo    oo  #####################  oo    oo ####',
    '### oo     oo  ###################  oo     oo ####',
    '### oo      oo                     oo      oo ####',
    '### oo       oo  ooooooooooooooo  oo       oo ####',
    '### oo        ooooooooooooooooooooo        oo ####',
    '### oo     ooooooooooooooooooooooooooo    ooo ####',
    '#### oo   ooooooo ooooooooooooo ooooooo   oo #####',
    '####  oo oooooooo ooooooooooooo oooooooo oo  #####',
    '##### oo oooooooo ooooooooooooo oooooooo oo ######',
    '#####  o ooooooooooooooooooooooooooooooo o  ######',
    '###### ooooooooooooooooooooooooooooooooooo #######',
    '##### ooooooooo     ooooooooo     ooooooooo ######',
    '##### oooooooo  @@@  ooooooo  @@@  oooooooo ######',
    '##### oooooooo @@@@@ ooooooo @@@@@ oooooooo ######',
    '##### oooooooo @@@@@ ooooooo @@@@@ oooooooo ######',
    '##### oooooooo  @@@  ooooooo  @@@  oooooooo ######',
    '##### ooooooooo     ooooooooo     ooooooooo ######',
    '###### oooooooooooooo       oooooooooooooo #######',
    '###### oooooooo@@@@@@@     @@@@@@@oooooooo #######',
    '###### ooooooo@@@@@@@@@   @@@@@@@@@ooooooo #######',
    '####### ooooo@@@@@@@@@@@ @@@@@@@@@@@ooooo ########',
    '######### oo@@@@@@@@@@@@ @@@@@@@@@@@@oo ##########',
    '########## o@@@@@@ @@@@@ @@@@@ @@@@@@o ###########',
    '########### @@@@@@@     @     @@@@@@@ ############',
    '############  @@@@@@@@@@@@@@@@@@@@@  #############',
    '##############  @@@@@@@@@@@@@@@@@  ###############',
    '################    @@@@@@@@@    #################',
    '####################         #####################',
    '##################################################',
]


def main():
    application = QApplication(sys.argv)
    window = uic.loadUi('test.ui')
    
    cat_pixmap = QPixmap(CAT_XPM)
    # Leave some space for text under the item.
    size = cat_pixmap.size() + QSize(0, 20)
    window.thumbnails.setIconSize(size)
    window.thumbnails.setGridSize(size + QSize(30, 30))
    
    cat_icon = QIcon(cat_pixmap)
    for i in xrange(40):
        QListWidgetItem(cat_icon, format(i, '04d'), window.thumbnails)
    
    window.thumbnails.itemClicked.connect(
        lambda item: QMessageBox.information(
            window,
            'Title',
            "Thumbnail '{}' clicked.".format(item.text()),
        )
    )
    window.show()
    sys.exit(application.exec_())


if __name__ == '__main__':
    main()
“Pets are always a great help in times of stress. And in times of starvation too, o'course.” — Terry Pratchett, Small Gods
__deets__
User
Beiträge: 3500
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mittwoch 11. Juli 2018, 15:44

Na da ginge bestimmt auch ein kodiertes PNG in tkinter - dank StringIO. Aber wollen wenn man eh viele Dateien distributieren muss tät ich’s nicht.
Benutzeravatar
__blackjack__
User
Beiträge: 1230
Registriert: Samstag 2. Juni 2018, 10:21

Mittwoch 11. Juli 2018, 15:59

@__deets__: Nö, wollen würde ich das auch nicht. :-) `StringIO` braucht man auch gar nicht, die Bilderklassen in `Tkinter` kennen ein `data`-Schlüsselwortargument bei dem man direkt die Binärdaten übergeben kann. Und die kann man beispielsweise Base64-kodiert als Konstanten in den Quelltext schreiben (lassen). Das hat wuf schon bei einigen seiner Beispiele hier im Forum so gemacht um komplette Beispiele zu haben ohne das man noch Bilder irgendwo hinterlegen/runterladen muss.
“Pets are always a great help in times of stress. And in times of starvation too, o'course.” — Terry Pratchett, Small Gods
xXSkyWalkerXx1
User
Beiträge: 148
Registriert: Mittwoch 27. Juni 2018, 17:39

Donnerstag 12. Juli 2018, 15:13

Und wie siehts nun eigentlich mit'n einbetten von Videos aus?
Also mit Videos aus meiner Festplatte.
Benutzeravatar
__blackjack__
User
Beiträge: 1230
Registriert: Samstag 2. Juni 2018, 10:21

Donnerstag 12. Juli 2018, 15:15

@xXSkyWalkerXx1: Wäre der erste Schritt nicht erst einmal abspielen, bevor Du ans einbetten denkst?
“Pets are always a great help in times of stress. And in times of starvation too, o'course.” — Terry Pratchett, Small Gods
xXSkyWalkerXx1
User
Beiträge: 148
Registriert: Mittwoch 27. Juni 2018, 17:39

Donnerstag 12. Juli 2018, 16:29

Aber um ein Video abspielen zu können (als Nutzer des Programmes, nicht als Programmierer), muss einem das Video nicht erstmal angezeigt werden? :D
Damit man es überhaupt abspielen kann.
Benutzeravatar
__blackjack__
User
Beiträge: 1230
Registriert: Samstag 2. Juni 2018, 10:21

Donnerstag 12. Juli 2018, 16:40

Häh?
“Pets are always a great help in times of stress. And in times of starvation too, o'course.” — Terry Pratchett, Small Gods
xXSkyWalkerXx1
User
Beiträge: 148
Registriert: Mittwoch 27. Juni 2018, 17:39

Donnerstag 12. Juli 2018, 17:49

Naja, ich möchte ja Videos in meinem Programm haben bzw anzeigen.
Du hast gesagt, dass man es erstmal abspielen muss anstatt erst einzubetten: "Wäre der erste Schritt nicht erst einmal abspielen, bevor Du ans einbetten denkst?"
Antworten