Ist es möglich, ein IMG-Bild zu machen und eine exakte Farbe zu einer anderen zu ersetzen, sagen wir #fff zu # 000, behalten alle anderen Farben unverändert? Wahrscheinlich kann die Farbmatrix von SVG-Filtern helfen?Ersetzen Sie eine Farbe mit SVG-Filtern
Antwort
So etwas wie CSS background-blend-mode: exclusion;
? Sah es here.
Keine Antwort, aber ich habe nicht genug Ruf zu kommentieren.
Dies ist mit Canvas trivial. Es ist auch möglich, mit SVG zu tun, aber es ist verschachtelt. Die folgende Methode funktioniert mit herkömmlichen vollständig opaken Bildern. Zuerst konvertieren Sie jeden nicht übereinstimmenden Farbwert in jedem Kanal auf Null und jeden übereinstimmenden Farbwert auf 1, indem Sie einen langen ComponentTransfer verwenden (der Index der einzigen "1" in Ihren 256 Mitglieds-tableValues-Arrays sollte mit Ihrem r-, g- und b-Ersatz übereinstimmen) Wert). Dann zerschnellst du das Alpha von allem außer den resultierenden weißen Pixeln unter Verwendung einer Farbmatrix. Sie verwenden das Ergebnis als Maske mit einem FeFlood Ihrer Zielfarbe und fügen das Ergebnis über Ihrer ursprünglichen Grafik zusammen. Zum Beispiel - der folgende Code ersetzt eine bestimmte Farbe - rgb (87, 78, 29) mit rot.
<svg width="800px" height="600px" viewBox="0 0 800 600">
<defs>
<filter id="color-replace" x="0%" y="0%" width="100%" height="100%" color-interpolation-filters="sRGB">
<!--Replace rgb(87,78,29) with red-->
<feComponentTransfer>
<feFuncR type="discrete" tableValues="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"/>
<feFuncG type="discrete" tableValues="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"/>
<feFuncB type="discrete" tableValues="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"/>
</feComponentTransfer>
<feColorMatrix type="matrix" values="1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
1 1 1 1 -3" result="selectedColor"/>
<feFlood flood-color="red"/>
<feComposite operator="in" in2="selectedColor"/>
<feComposite operator="over" in2="SourceGraphic"/>
</filter>
</defs>
<g filter="url(#color-replace)">
<rect x="50" y="50" height="100" width="100" fill="rgb(86,77,28)"/>
<rect x="250" y="50" height="100" width="100" fill="rgb(86,77,29)"/>
<rect x="450" y="50" height="100" width="100" fill="rgb(86,78,29)"/>
<rect x="50" y="250" height="100" width="100" fill="rgb(87,77,29)"/>
<rect x="250" y="250" height="100" width="100" fill="rgb(87,78,29)"/>
<rect x="450" y="250" height="100" width="100" fill="rgb(87,78,30)"/>
<rect x="50" y="450" height="100" width="100" fill="rgb(88,78,30)"/>
<rect x="250" y="450" height="100" width="100" fill="rgb(88,79,29)"/>
<rect x="450" y="450" height="100" width="100" fill="rgb(88,79,30)"/>
</g>
</svg>
- 1. JAVA: Ersetzen Sie eine Farbe durch eine andere mit ColorModel
- 2. Python: PIL eine einzige RGBA Farbe ersetzen
- 3. PHP - Ersetzen Sie Farbe in Bild
- 4. Eine einzelne Farbe in PIL ersetzen?
- 5. ImageMagick ändern ersetzen eine Farbe auf Palette mit C#
- 6. App Erfinder ersetzen Hintergrundbild mit Farbe
- 7. Cab Ersetzen Sie alle Dateien vs Ersetzen Sie eine Datei
- 8. Problem mit dem Ersetzen der Farbe des Wortvorkommens
- 9. mit Regex, um eine Zeichenfolge Ausdruck ersetzen
- 10. Ersetzen Sie eine Komponente durch eine andere mit Animation
- 11. Ersetzen Sie nur die Ecken eines gedrehten Bildes durch eine andere Farbe
- 12. Erstellen Sie eine transparente Farbe in PDF
- 13. Erstellen Sie eine neue Farbe zeichnen
- 14. Machen Sie einen Filter auf eine Farbe
- 15. Ersetzen Sie UINavigation mit UIToolbar?
- 16. Ersetzen Sie Singletons mit was?
- 17. Ändern Sie eine Schaltfläche Farbe mit onPress auf React Native
- 18. Seaborn: Geben Sie eine genaue Farbe an
- 19. Ersetzen Sie die spezifische RGB-Farbe durch ein anderes Bild mit PHP
- 20. Ersetzen Sie einen Text durch eine Variable
- 21. Sammeln Sie alle CSS-Einstellungen, die eine bestimmte Farbe enthält
- 22. Fügen Sie eine Farbe für NA-Daten mit ggplot2 und Farbe Brauer
- 23. Ersetzen Sie URL mit Ellipsen
- 24. Ersetzen Sie HTML mit Datenattribut
- 25. Ersetzen Sie Applet mit Alternativen
- 26. Ersetzen Sie Variablen mit Schluck
- 27. Ersetzen Sie ListView mit RecyclerView
- 28. Ersetzen Sie Text mit eckigen
- 29. Ersetzen Sie Vektorwerte mit Namen
- 30. Ersetzen Sie INTERSECT mit phpmyadmin