Ich habe eine transparente Ebene in Photoshop CS5 (also wird sie höchstwahrscheinlich intern als nicht multiplizierte RGB-Komponente plus Alpha-Komponente pro Pixel gespeichert).
Jetzt möchte ich dies in eine undurchsichtige Ebene (nur nicht vervielfachtes RGB) + eine Alphamaske umwandeln. Das Ergebnis sollte dem Original entsprechen.
Ich kann nicht einfach die transparente Ebene mit Schwarz unterlegen, die Auswahl daraus als Maske nehmen und die Ebenen zusammenführen, da dies dazu führen würde, dass das Alpha in den RGB-Werten vormultipliziert wird.
Ich hoffe, Sie verstehen das Problem und können mir eine Lösung dafür geben.
Als alternative Erklärung: Ich möchte den REVERSE-Prozess wie folgt durchführen:
- erstelle eine neue Ebene und füge sie in ein beliebiges Bild ein
- Erstellen Sie eine Maske mit einem Weiß-Schwarz-Verlauf
- wende die Ebenenmaske an
Erklärung Bilder:
Zustand A:
Zustand B:
WICHTIG: Die Ebene ist nur für dieses Beispiel vollständig konstant rot - aber Sie können sich jedes beliebige Bild anstelle des konstanten Rotes vorstellen. Also - um von Zustand A nach Zustand B zu gelangen, muss man einfach die Ebenenmaske anwenden.
Ich möchte wissen, wie ich von Staat B nach Staat A komme.
Antworten:
Ich verstehe deinen Schmerz vollkommen. Hier ist meine Lösung :)
Alpha als Maskenaktion extrahieren
Hier ist, was es tut:
Edit:
Ich hoffe das hilft :)
quelle
Falsch! Alles falsch!
Ich habe mich und Sie selbst getäuscht: Was ich geschaffen habe, ist in der Tat ein vorvervielfachtes Bild - nicht mit Schwarz, sondern mit Weiß vorvervielfacht. Ich überlasse es anderen, darauf aufzubauen.
Ich habe es so geschafft:
Und so habe ich es gemacht:
Dies ist das Testbild, das ich verwendet habe. Die Kanalansicht in PS sieht folgendermaßen aus:
Durch Auswahl der einzelnen Kanäle habe ich sie in einzelne Ebenen kopiert und sie dann mit einem weißen Hintergrund abgeflacht, um eine Schwarzweißkarte zu erhalten, wie hier gezeigt:
Ich habe auch die Transparenz des Originalbildes in eine Ebene extrahiert, indem ich auf das Ebenen-Miniaturbild geklickt und eine neue Ebene mit der Auswahl gefüllt habe.
Dann habe ich ein neues Bild mit den gleichen Abmessungen und ohne Transparenz erstellt. Anschließend habe ich die erstellten RGB-Ebenen in die entsprechenden Kanäle des neuen Bildes eingefügt:
Im letzten Schritt habe ich die Ebene durch Doppelklicken "abgeflacht" und aus der Alpha-Ebene des Originalbildes eine Ebenenmaske erstellt.
Wie oben erwähnt, ergibt dies kein nicht vormultipliziertes Bild, da mein Beispiel so aussehen müsste, um nicht vormultipliziert zu werden:
Ist jemand schlauer als ich und kann das schaffen? Ich gehe davon aus, dass dies ohne erweitertes pixelbasiertes Scripting in Photoshop nicht möglich ist.
quelle
Ok - Ich habe einen einfachen PixelBender-Filter erstellt, der mit dem Photoshop-PixelBender-Plugin (http://labs.adobe.com/downloads/pixelbenderplugin.html) verwendet werden kann, um die Transparenz für eine Ebene zu entfernen. Hier ist es: http://neo.cycovery.com/removeTransparency.pbk
quelle
Basierend auf den gegebenen Antworten und Ihren Kommentaren lautet die kurze Antwort: Sie können nicht tun, was Sie wollen. Sobald Sie die Maske angewendet haben, wird die Ebene gerendert und die unsichtbaren Bilddaten werden verworfen.
BEARBEITEN:
Ich habe einige Beispiel-PNG-Dateien erstellt und sie dann mit PHP bearbeitet (Quellcode unten).
Wenn ich eine PNG-Datei mit zufälliger Transparenz erstelle und speichere, während die Ebene eine Maske hat, werden in den zu 100% durchsichtigen Bereichen (z. B. von einem Box-Tool) weiß angezeigt, ob die Alpha-Unterstützung aktiviert ist oder nicht. Farbverläufe, die zu 100% klar sind, werden bei deaktiviertem Alpha nicht angezeigt.
Wenn ich die Ebenenmaske (permanent) anwende und dann das PNG erstelle, liefert PHP das Originalbild, wenn Alpha deaktiviert ist.
Eine mögliche Lösung hierfür ist es, ein Softwarepaket zu finden, das Alpha-PNG nicht unterstützt, und es von dort aus erneut zu speichern. Was die Wiederherstellung der Originalmaske angeht, habe ich mir das noch nicht angesehen.
Beide Codebeispiele sind Proof-of-Concept und SLOW.
Um das Alpha zu extrahieren (Anmerkung: PHP hat eine GD-Beschränkung von 128 Level Alpha anstatt 256), so dass etwas Präzision verloren geht. Das Alpha kann mit dem Ebenen-Werkzeug auf 256 gedehnt werden.)
quelle
Ich habe herausgefunden, wie man es in GIMP macht. Es kann sein, dass es nicht PhotoShop ist, aber es wird zumindest das tun, was Sie verlangen. (Wie ich es trotzdem interpretiere;))
An dieser Stelle verbleibt ein Bild mit einer Alphakanalmaske.
Sie können noch einen Schritt weiter gehen:
Es gibt auch einen YouTube-Clip dazu.
quelle
Dies scheint irrsinnig komplex. Wenn ich die ursprüngliche Frage und ihre verschiedenen Erläuterungen richtig verstehe, besteht das Problem darin, ein beliebiges Bild, das Transparenz enthält, vollständig undurchsichtig zu machen und dann die ursprünglichen Alphawerte als Maske anzuwenden, um das ursprüngliche Erscheinungsbild wiederherzustellen.
Wenn dies die Frage ist, ist dies eine sehr einfache, wenn auch etwas mühsame Antwort.
Kopiere die Ebene 10 mal. Die Transparenz wird im zusammengesetzten Bild "ausgefüllt".
Füge alle Kopien zusammen (aber NICHT die Originalebene , die du für die letzten Schritte benötigst).
Wiederholen Sie die Schritte 1 und 2 mit der zusammengeführten Ebene und wiederholen Sie sie dann. Zu diesem Zeitpunkt sind alle Pixel, die zu weniger als 100% transparent waren, jetzt zu 100% undurchsichtig (wenn es einige Streuungen gibt, wiederholen Sie den Vorgang, bis keine mehr vorhanden sind). Das sind so viele Bildinformationen, wie es möglich ist, wiederherzustellen.
Strg / Befehlstaste-Klicken Sie auf die ursprüngliche Ebenenminiatur , um die Transparenz zu laden.
Klicken Sie mit der neuen, undurchsichtigen Ebene auf das Ebenenmasken-Symbol im Ebenenbedienfeld.
quelle
Ok, das ist eigentlich ziemlich einfach (man muss die marschierenden Ameisen ignorieren)
Erstelle eine neue Ebene und fülle sie vollständig mit der Farbe, die du verwendest (wenn du sie abtast, nimm sie vom Totpunkt des ersten Bildes)
Dann nimm dein erstes Bild und drücke STRG + Klick auf die Ebenenminiatur. Du solltest eine Version davon sehen:
Wie ich bereits sagte: Ignorieren Sie die marschierenden Ameisen, das Auslaufen wird in CS5 automatisch wirksam.
Stellen Sie dann sicher, dass Sie die gefüllte Ebene ausgewählt haben, und klicken Sie auf die Maskenschaltfläche:
Dann verstecke einfach die unterste Ebene und du solltest fertig sein, mit dem genauen Effekt, den du suchst :)
Auf diese Weise können Sie eine angewendete Maske in CS5 zurückentwickeln. Die Auswahlfunktion für CS5-Ebenen ist ziemlich fortgeschritten, daher ignorieren Sie die marschierenden Ameisen die meiste Zeit nur, da sie keine Federn korrekt anzeigen, die bei der Auswahl auftreten werden :)
Hoffe es klappt für dich.
quelle
Was Sie tun möchten, erledigen Sie ganz einfach mit einem Plugin wie dem Photofreebies-Plugin "Remove Transparency". Zuerst klicken Sie mit gedrückter Befehlstaste auf die Ebene, um die transparenten Pixel auszuwählen, und speichern dann diese Transparenzinformationen in einem neuen Kanal, um sie zu behalten. Dann wenden Sie den Filter "Transparenz entfernen" an und Sie sehen, dass die "versteckten" Pixel in Ihrer Ebene undurchsichtig werden (ziemlich interessant, um zu sehen, wie Photoshop Ihre 100% transparenten Pixel BTW gestaltet). Ich wünsche mir wirklich seit Jahren, dass dies nativ in Photoshop eingebaut wurde, aber leider, denke ich, zu fortgeschritten.
Leider kann ich keine Photoshop CS6-kompatible Version eines solchen Plugins für den Mac finden. GraphicConverter kann das auch (Remove Alpha channel).
quelle
Hier ist die Antwort:
Erstelle eine Ebene mit dem Material, das du im Bild haben willst.
Treffen Sie eine Auswahl für den gewünschten Alpha-Kanal.
Machen Sie die Auswahl zu einer "Ebenenmaske" für die Bildebene.
Klicken Sie mit der rechten Maustaste auf die Ebenenmaske und wählen Sie "Ebenenmaske anwenden".
Nun beginnt die Magie:
Bitte schön!
quelle