Photoshop: Transparente Bereiche in PNGs wiederherstellen

PNGs können einige Informationen mehr enthalten, als nur die sichtbaren Pixel. Zum Beispiel Photoshop-Hilfslinien. Oder aber die ursprünglichen Pixel in den transparenten Bereichen 🙂 ImageMagick kann diese Bereiche mittels

wiederherstellen (Danke, Björn). Photoshop kann das natürlich auch, und dafür wird auch kein Plugin (wie zB Remove Transparency) benötigt: Was man aus Sicht von Photoshop machen möchte, ist eine Konvertierung der transparenten Bereiche in eine durch Photoshop direkt manipulierbare (=löschbare) Form: Menü “Ebene” -> Ebenenmaske -> Aus Transparenz (Quelle). Die erzeugte Ebenenmaske kann man löschen oder mittels Shift+Click ausblenden, et voilà!

Also: Wenn das nächte mal PNGs mit aus Geheimhaltungsgründen “gelöschten” Bereichen bei euch auf dem Schreibtisch landen… 😉 Das alles geht natürlich nur, wenn das PNG nicht dahingehend “optimiert” wurde, dass abmaskierte Pixel gelöscht wurden.

10651

Notiz an mich selber: Wenn man sich im Falle eines kritischen Fehlers eine Mail schicken lässt, dann sollte man dafür sorgen, dass das nur 1x passiert – nicht mehrfach pro Minute das ganze Wochenende durch 🙂

Zu meiner Verteidigung: Es ging dabei um das eigentlich planmäßige Ablaufen eines Facebook-Tokens. Damit hatte ich gerechnet, und mir einen Kalendereintrag gemacht, wodurch der Fehlerfall nicht aufgetreten wäre. Aber offenbar läuft der Token früher ab, als angegeben m(

TYPOlight: Hooks nutzen, um ZIP-Files automatisch zu entpacken

Ein Hook ist simpel: Von der bekannten Modulstruktur benötigt man nur die /config/config.php, in der man Klasse und Funktion an den gewünschten Hook hängt:

Sowie die Klasse als solche (direkt im Modulordner):

Das war’s im Wesentlichen. Der Vollständigkeit halber hier noch die Funkion zum Entpacken, sowie ein wenig Aufräumen der hochgeladenen Dateien:

HTH

TYPOlight: Eigene Content-Elemente

Direkt analog zur Erweiterung bestehender Content Elemente mit neuen Feldern funktioniert das Erstellen eigener Content Elemente. Man hängt sich nur in andere (bzw. weitere) Arrays. Ich orientiere mich im Folgenden an diesem Tutorial, sowie an dieser Erweiterung.

Also, gegeben sei dieselbe Dateistruktur wie für neue Felder, in einem eigenen Modul. In /config/config.php deklariert man sein neues Content-Element:

In /config/database.sql fügt man die gewünschten Datenbank-Felder hinzu:

In /dca/tl_content.php ergänzt man die neuen Felder und deklariert die Palette:

In languages/de/tl_content.php und analog in languages/en/tl_content.php ergänzt man die referenzierten Texte:

Nun kommt die neue Klasse IframeCustom:

Und schließlich das Template ce_iframe_custom.tpl:

Ein Selbstgänger 🙂

TYPOlight: Content-Elemente mit eigenen Feldern

[Disclaimer: Ja, TYPOlight heißt schon einige Zeit Contao – die Installation, die ich hier vor mir habe, heißt aber noch TYPOlight. Aktuell ist 3.3.3, Beta ist 4.0, ich habe 2.8.1. Eine Übersicht über alle Versionen gibt es hier.]

Es gibt eine Doku zum Hinzufügen von Feldern. Mein Problem damit: Die Anleitung bezieht sich auf die Mitgliederverwaltung. Die Mitgliederverwaltung hat aber eine eigene Tabelle (tl_member) in der Datenbank, sowie eine eigene Palette. Interessanter ist es, eine neues Feld bsplw. dem Content Element “Image” hinzuzufügen, den alle Content Elemente teilen sich die Tabelle tl_content, sowie eine gemeinsame Palette. Wie bekommt man ein Feld, das nur für Images angezeigt wird?

Analog zum oben verlinkten Beispiel: Über ein Modul, und zwar mit folgender Dateistruktur:

  • tl_content_custom/
    • config/
      • config.php
      • database.php
    • dca/
      • tl_content.php
    • languages/
      • de/
        • tl_content.php
      • en/
        • tl_content.php
    • templates/
      • ce_image_custom.tpl
    • ContentImageCustom.php

Im ersten Schritt hängt man sich in das CMS:

In config/config.php registriert man eine eigene Klasse für den Typ “Image”:

In config/database.sql definiert man die zusätzlich benötigten Felder der Tabelle tl_content – und man darf sich nicht daran stören, dass das in einem CREATE TABLE passiert:

Die Felder werden dann über http://mydomain.tld/typolight/install.php unter dem Punkt “Tabellen aktualisieren” aktualisiert; dort wird das CREATE in ein ALTER geändert.

In dca/tl_content.php deklariert man, wann das neue Feld angezeigt wird (“dca” steht für “Data Container Array“), also dass es nur für Images verwendet werden soll. Dazu ergänzt man “die Palette” und “die Felder”. Die Palette ist quasi ein Sub-Set aller für Content-Elemente verfügbaren Felder. Wenn wir also das Content Element “Image” nur um vorhandene Felder erweitern wollten, dann bräuchten wir die Felder nicht ergänzen. Das ist hier nicht der Fall (wir haben oben ein neues Feld in die Datenbank eingefügt), deshalb konfigurieren wir das neue Feld is_retina und hängen es (ja: per str_replace ^^) an die kommaseparierte Liste von erlaubten Feldern für den Typ “Image”. Dabei kann man sich an /system/modules/backend/dca/tl_content.php orientieren, dort sind die Original-Deklarationen der Felder und Paletten zu finden.

In languages/de/tl_content.php und analog in languages/en/tl_content.php kommen alle benötigten (=in der Feldkonfiguration referenzierten) Texte, das ist hier nur einer:

Im zweiten Schritt erstellt man dann endlich die eigene Logik. In config/config.php haben wir die Klasse ContentImageCustom referenziert (s.o.). Die wird jetzt direkt im Modulordner angelegt; von dort wird sie automatisch geladen. Der Einfachheit halber erweitern wir ContentImage, und der einzig nötige Code ist die Referenzierung unseres eigenen Templates, in dem wir dann auf das neue Feld reagieren:

Das genannte Template ist templates/ce_image_custom.tpl, und darin sieht’s dann so aus:

(Das ist natürlich nur ein Snippet; insgesamt habe ich den Code von /system/modules/frontend/templates/ce_image.tpl geklaut, und mit obigem Snippet erweitert.)

HTH