Entfernen Sie den weißen Teil jeder Farbe, um hellere Teile transparenter zu machen

Mein Problem ist so allgemein, und es gibt versionsabhängige Plug-Ins für das Problem, das mit meiner Version nicht funktioniert. Ich habe auch Problemumgehungen gefunden , die nicht die richtigen Lösungen sind.

Ich würde das Weiß meines Bildes in Transparenz umwandeln, dh Grau in Schwarz und Transparent zerlegen. Es wäre richtig, wenn ich den Sättigungswert des Pixels aus der HSB- (Zerlegungs-)Zusammensetzung verwenden könnte, die Sättigung jedes Pixels auf 100 % von seinem ursprünglichen s(x,y)-Wert setzen und 100 % - s(x, y) Transparenz zum Pixel.

Wie die erwähnte und viele andere Problemumgehungen nahelegen, ist die Verwendung des Bildes selbst als Alphakanal keine Lösung. Wenn das Pixel beispielsweise zu 20 % weiß und zu 80 % grau ist und Sie eine Transparenz von 20 % anwenden, sieht das Pixel aus wie 80 % - 0,8 * 0,2 = 56 % schwarz statt 80 %.

Eine andere Stackexchange-Frage zum Umwandeln von Weiß in Transparent ähnelt meinem Problem, aber wie ich verstehe, deckt sie mein Problem nicht ab. Falls ich falsch liege, würde ich mich freuen, wenn mich jemand aufklärt, wie ich das auf mein Szenario anwenden kann.

Wollen Sie also, dass Grau überhaupt transparent ist?
Ich möchte, dass Grau schwarz und halbtransparent wird. Wenn es zB 30 % schwarz 70 % weiß ist, sollte es 100 % schwarz und 70 % transparent sein.
Wenn das Pixel zu 20 % weiß und zu 80 % grau ist (was 80 % schwarz und 20 % grau ist), würden Sie 40 % (20 % weiß + 20 % weiß) Transparenz anwenden und ungefähr 60 % transparentes Schwarz erhalten, ein Grau, was ist das, was ich erwarten würde. Nein?
Wenn ich verstehe, was Sie tun möchten, geben Faber Birrens "Farbgleichungen" an, welche Proportionen für Schwarz, Weiß und den Farbton für jedes Bild erforderlich sind. Durch Ersetzen von Weiß durch X-parency können %-Werte von Schwarz und der Farbton bestimmt werden.

Antworten (4)

Ich weiß, dass Sie gefragt haben, wie man das in Photoshop macht, aber dies ist vielleicht einer der wenigen Fälle (jetzt, wo Photoshop auch eine inhaltsbewusste Füllung hat), in denen GIMP die Arbeit besser macht. Also mein Lösungsvorschlag wäre:

  1. Laden Sie GIMP herunter und installieren Sie es. (Scrollen Sie nach unten zum Windows-Installationsprogramm.)

  2. Öffnen Sie Ihr Bild in GIMP.

  3. Verwenden Sie das Werkzeug Farbe zu Alpha , um Weiß in transparent umzuwandeln ( maskieren und optimieren Sie nach Bedarf, wenn Sie etwas nicht transparentes Weiß im Ergebnis behalten möchten).

  4. Speichern Sie das resultierende Bild und öffnen Sie es erneut in Photoshop.

Hinweis: GIMP kann Photoshop-.psd-Dateien importieren und exportieren, aber einige Informationen können während der Hin- und Her-Konvertierung verloren gehen. Es kann sicherer sein, Ihre PSD-Dateien nur in Photoshop zu bearbeiten und stattdessen das PNG-Format zum Übertragen von Bildern zwischen Photoshop und GIMP zu verwenden.

Das ist genau das, wonach ich gesucht habe. A hat das Tag Adobe-Photoshop verwendet, aber ich habe nicht gesagt, dass Sie nur mit diesem Programm eine Lösung bereitstellen müssen :)

Sie können Grau nicht in Schwarz ändern und das Weiß in einer Methode transparent machen. Die einzige Möglichkeit, dies ohne Maskierung zu tun, besteht darin, die Ebenen auf Ihrem gesamten Bild zu ändern. Wenn Sie also zum Beispiel etwas Farbiges im Bild haben, müssen Sie das maskieren.

(Duplizieren Sie zuerst Ihre Bildebene und blenden Sie sie zur Sicherung aus.) Erstellen Sie auf Ihrer Ebene eine Ebenenmaske. Wählen Sie Ihr gesamtes Bild aus und kopieren Sie es mit Strg + Umschalt + C. Klicken Sie bei gedrückter Alt-Taste auf das Ebenenmaskensymbol im Ebenenbedienfeld, um es zu aktivieren. ctrl+shift+v dort einfügen. Deaktivieren und Strg + i, um die Farben zu invertieren. Alle weißen Bereiche sollten jetzt schwarz sein, was bedeutet, dass sie zu 100% ausgeblendet sind.

Erstellen Sie nun eine Schwellenanpassungsebene. Dadurch sollte die darunter liegende Ebene (Ihre Bildebene) rein schwarzweiß werden. Passen Sie die Balance nach Bedarf an und fügen Sie dem Schwellenwert eine Ebenenmaske hinzu, wenn Sie farbige Bereiche haben, die Sie nicht von Grau in Schwarz konvertieren möchten. Wählen Sie alle Strg + Umschalt + C-Kopie und fügen Sie sie in Ihre ursprüngliche Bildebene ein.

Das Ergebnis sollte eine Schwarz-Weiß-Version Ihres Bildes sein, wobei die ursprünglichen Schwarz-Weiß-Werte (ohne Schwellenwert) die Transparenzebene steuern. Ihre 20 % Grautöne erscheinen jetzt als 20 % Schwarztöne.

1: Ich suche keine Ein-Schritt-Methode. 2: Meine Ziele sind ziemlich einfach und ich kann meine Wünsche auch mit Formeln und Gleichungen darstellen. Photoshop ist ein fortgeschrittenes Programm, ich wette, es gibt eine Möglichkeit zu tun, was ich will. 3: Die von Ihnen bereitgestellte Lösung ähnelt anderen, die ich zu vermeiden versuche. 4: Ich habe vergessen zu betonen, aber die Beschreibung enthält implizit: jede "nach Bedarf"-Lösung ist nicht akzeptabel. 5: Danke trotzdem für deine Antwort :)
@DanielTuzes Ich bin mir nicht sicher, wie Formeln ein effektiver Weg sind, um zu beschreiben, wonach Sie suchen. Nach meinem Verständnis wolltest du Schwarz, wo deine Grautöne sind, aber die Transparenz soll der Schwarz-Weiß-Wert der Grautöne sein. Ich habe den einfachsten Weg beschrieben, dies zu tun, ohne ein benutzerdefiniertes Skript/eine benutzerdefinierte Aktion zu erstellen. Ich bin mir nicht sicher, wie es als Bedarfslösung interpretiert werden kann, einfach weil ich eine Notiz hinzugefügt habe, wenn Sie dies tun müssen. Ich bin mir wirklich nicht sicher, was du sonst noch fragst...

Nur aus Neugier habe ich mir ein Proof-of-Concept-Skript für PS ausgedacht, um das zu tun, was Sie vorgeschlagen haben, aber leider ist es extrem langsam . Wenn Sie es testen möchten, erstellen Sie ein neues Dokument mit einem Quadrat von etwa 25 Pixeln, nennen Sie die Basisebene "Basis" und fügen Sie dann zwei leere Ebenen mit den Namen "Alpha" und "HSB" hinzu. Die Alpha-Ebene wird mit Pixeln gefüllt, die einen Grauwert (in RGB) basierend auf dem S-Wert haben, und die HSB-Ebene wird mit Pixeln gefüllt, deren S-Wert auf 100 geändert wurde. Die Alpha-Ebene kann als Ebenenmaske für verwendet werden die HSB-Ebene (alle auswählen, Ebenenmaske zur HSB-Ebene hinzufügen, zu Kanälen wechseln und die kopierte Alpha-Ebene in den HSB-Maskenkanal einfügen).

Wenn Sie alle Paletten ausblenden, scheint es etwas schneller zu laufen, aber ein echtes Bild ist "Kaffee holen und vielleicht ein bisschen einkaufen" langsam. Mach langsam ein Nickerchen.

var currDoc = app.activeDocument;

var sampler = currDoc.colorSamplers.add([0,0]);
for (var x = 0; x < currDoc.width; ++x) {
    for (var y = 0; y < currDoc.height; ++y) {
        currDoc.activeLayer = currDoc.artLayers.getByName("base");
        sampler.move([x,y]);

        var result = selectPixel(x,y, currDoc);
        result = setPixelColorHSB(sampler.color, currDoc);
        result = setPixelColorALPHA(sampler.color, currDoc);

    }
}
sampler = null;
currDoc.selection.deselect;

function setPixelColorHSB(pixelColor, currDoc)  {
    currDoc.activeLayer = currDoc.artLayers.getByName("HSB");
    currDoc.activeLayer.visible = true;

    var color = new SolidColor();

    color.hsb.hue = pixelColor.hsb.hue;
    color.hsb.saturation = 100;
    color.hsb.brightness=pixelColor.hsb.brightness;

    currDoc.selection.fill(color);
    currDoc.activeLayer.visible = false;
    return true;
}

function setPixelColorALPHA(pixelColor, currDoc)    {
    currDoc.activeLayer = currDoc.artLayers.getByName("ALPHA");
    currDoc.activeLayer.visible = true;

    var color = new SolidColor();

    color.rgb.red = Math.floor((pixelColor.hsb.saturation/100) * 255);
    color.rgb.green = color.rgb.red;
    color.rgb.blue = color.rgb.red;

    currDoc.selection.fill(color);
    currDoc.activeLayer.visible = false;
    return true;
}

function selectPixel (pixX, pixY, currDoc)  {
    currDoc.selection.deselect;
    var selRegion = null;
    selRegion = [
        [pixX, pixY],
        [pixX + 1, pixY],
        [pixX + 1, pixY + 1],
        [pixX, pixY + 1],
        [pixX, pixY]
        ];
    currDoc.selection.select(selRegion);
    return true;
}
+1 für die Mühe, ein Skript zu schreiben, egal wie viele Nickerchen Sie machen müssen, während Sie darauf warten, dass es fertig ist.

Ich habe einen Weg gefunden, der meinen Anforderungen entspricht. Ich teile es mit Ihnen, damit Sie es kritisieren können. Ich bin auf der Suche nach weiteren Verbesserungen, also zögern Sie nicht, Ihre Notizen oder Antworten hinzuzufügen!

Leider ist diese Lösung wegen der Verwendung des cmyk-Kanals nicht allgemeingültig. Aber mit diesem Verfahren können Sie dies erreichenGeben Sie hier die Bildbeschreibung ein

von diesem: Geben Sie hier die Bildbeschreibung ein(laden Sie die Bilder herunter und sehen Sie sich die Transparenz an, wenn Sie keine Unterschiede sehen)

  1. Öffnen Sie das Bild im cmyk-Modus oder ändern Sie den Bildmodus in cmyk
  2. Erstellen Sie einen neuen Alphakanal Alpha Cyan basierend auf dem Cyan-Kanal: Machen Sie im Kanalbereich Cyan sichtbar und wählen Sie es aus, kopieren Sie es (alles auswählen, Strg + C); Erstellen Sie eine neue Ebene Alpha Cyan und fügen Sie den bereits in die Zwischenablage kopierten Cyan-Kanal ein (Strg+V)
  3. machen Sie nur die cmyk-Kanäle sichtbar und fügen Sie eine neue Ebene mit Cyan-Volltonfarbe ein, also erstellen Sie im Ebenenbedienfeld eine neue Ebene; fügen Sie ihm eine Cyan-Volltonfarbe hinzu, nennen Sie es Color Fill Cyan; füge eine Vektormaske hinzu; Laden Sie den Kanal Alpha Cyan und speichern Sie ihn im Kanal Color Fill Cyan Mask
  4. Wiederholen Sie 2 und 3 für Magenta, Gelb und Schwarz
  5. Blenden Sie die ursprüngliche Ebene aus, löschen Sie die weiße Hintergrundebene, falls vorhanden, stellen Sie sicher, dass die neuen 4 Ebenen sichtbar sind
  6. Stellen Sie die Sichtbarkeit der 4 Ebenen auf dunkler oder multiplizieren ein
  7. Stellen Sie den Bildmodus auf RGB ein, wenn Sie möchten