Froschs Blog

Computer und was das Leben sonst noch so zu bieten hat

Zur Website | Impressum

Archiv der Rubrik 'Programmierung'

Canon-Kameras, Python-PIL und die EXIF-Daten

Mittwoch, 12. Oktober 2022

Vorgestern Abend stieß ich auf ein … interessantes Problem.

Projekt: downscaler (Git-Repo: Downscaler; clonen geht derzeit noch nicht wieder, aber man kommt über den „snapshot“-Link an die Datei-Inhalte). Geschrieben in Python3 mit den externen Modulen PIL (pillow) und piexif.

Das recht einfache Python-Script rotiert die JPG-Dateien aus einem Verzeichnis (bei Bedarf) und skaliert sie dann – sofern das Original größer ist – so herunter, daß die breitere Seite 1200 px hat. Das Ergebnis wird unter demselben Dateinamen in ein anderes Verzeichnis gespeichert. Das Original wird dabei nicht verändert. So weit, so gut.

Bisher habe ich das beim Bearbeiten mit The GIMP direkt mitgemacht. Das bedeutet aber auch, daß ich selbst solche Fotos, an denen ich sonst gar nichts editieren will, in GIMP holen, ggf. rotieren, runterskalieren und wieder abspeichern muß. Sich wiederholende Tätigkeiten sollte man doch besser einem Computer überlassen, weil der das schneller kann, nicht wahr? 🙂 (mehr …)


Kleine Diskussion mit MariaDB

Samstag, 8. Oktober 2022

Ich stand grad mal wieder auf dem Schlauch.

 MariaDB [piwigodb]> show columns from pwg_categories;
 +---------------------------+-----------------------------+------+-----+---------------------+
 | Field                     | Type                        | Null | Key | Default             |
 +---------------------------+-----------------------------+------+-----+---------------------+
 | id                        | smallint(5) unsigned        | NO   | PRI | NULL                |
 | name                      | varchar(255)                | NO   |     |                     |
 | id_uppercat               | smallint(5) unsigned        | YES  | MUL | NULL                |
 | comment                   | text                        | YES  |     | NULL                |
 | dir                       | varchar(255)                | YES  |     | NULL                |
 | rank                      | smallint(5) unsigned        | YES  |     | NULL                |
 | status                    | enum('public','private')    | NO   |     | public              |
 | site_id                   | tinyint(4) unsigned         | YES  |     | NULL                |
 | visible                   | enum('true','false')        | NO   |     | true                |
 | representative_picture_id | mediumint(8) unsigned       | YES  |     | NULL                |
 | uppercats                 | varchar(255)                | NO   |     |                     |
 | commentable               | enum('true','false')        | NO   |     | true                |
 | global_rank               | varchar(255)                | YES  |     | NULL                |
 | image_order               | varchar(128)                | YES  |     | NULL                |
 | permalink                 | varchar(64)                 | YES  | UNI | NULL                |
 | lastmodified              | timestamp /* mariadb-5.3 */ | NO   | MUL | current_timestamp() |
 | external_reference        | varchar(255)                | YES  |     | NULL                |
 +---------------------------+-----------------------------+------+-----+---------------------+

(mehr …)


Spaß mit Python3 und InnoDB

Donnerstag, 13. Januar 2022

Die Blogs, die ich betreibe bzw. administriere, laufen allesamt mit MariaDB, einem Fork von MySQL. Die beiden Datenbank-Systeme kennen zwei verschiedene Engines, um Daten zu verwalten: MyISAM (die ältere) und InnoDB (die neuere). Die Blogs, die ursprünglich mit WordPress gestartet waren, legten ihre Datenbank mit MyISAM an, und auch, wenn die Blogs mittlerweile auf ClassicPress umgestellt wurden, blieb dieses Format erhalten. Was ich neu direkt mit ClassicPress installiert habe, bekam jedoch eine Datenbank mit der InnoDB-Engine, die die Daten ein wenig anders ablegt. Im laufenden Betrieb insbesondere der relativ kleinen Blogs macht das erstmal keinen Unterschied.

Anders sieht das aus, wenn ich abseits vom Blogsystem (hier: mit Python3) in diese Datenbanken reingreifen möchte. Solange ich nur lesend reingehe, ist das weiterhin kein Problem. Will ich jedoch schreibend auf diese Datenbanken zugreifen, gibt es einen kleinen, feinen Unterschied, und der hat mich eine Weile beschäftigt. (mehr …)