Transparenz berechnen

Prophet05

Erfahrenes Mitglied
Hi,

wenn mir Hintergrundfarbe (RGB), Vordergrundfarbe (RGB) und Transparenz-Faktor bekannt sind wie kann ich aus diesen Komponenten die resultierende farbe berechenen?

mfg Prophet
 
PHP:
    echo '<td style="background-color:#'
            .dechex($alpha * hexdec(substr($vordergrund, 0, 2)) + (1 - $alpha) * substr($hintergrund, 0, 2))
            .dechex($alpha * hexdec(substr($vordergrund, 2, 2)) + (1 - $alpha) * substr($hintergrund, 2, 2))
            .dechex($alpha * hexdec(substr($vordergrund, 4, 2)) + (1 - $alpha) * substr($hintergrund, 4, 2))
            .';">&nbsp;</td>';
Die Komponenten des Hintergrundes wollen glaub ich auch mit [phpf]hexdec[/phpf] umgewandelt werden ;) Außerdem muss jede Komponente zweistellig dargestellt werden (ggf. führende 0 voranstellen).

Mein Vorschlag:
PHP:
	echo '<td style="background-color:#';

	printf('%02X%02X%02X',
		$alpha * hexdec(substr($vordergrund, 0, 2)) + (1 - $alpha) * hexdec(substr($hintergrund, 0, 2)),
		$alpha * hexdec(substr($vordergrund, 2, 2)) + (1 - $alpha) * hexdec(substr($hintergrund, 2, 2)),
		$alpha * hexdec(substr($vordergrund, 4, 2)) + (1 - $alpha) * hexdec(substr($hintergrund, 4, 2)));
	
	echo ';">&nbsp;</td>';
 
Für das Protokoll hier noch der relevante Teil des funktionierenden Beispielcodes von Prophet05:
PHP:
<html>

<head>
<title></title>
<style type="text/css">
    <!--
        td
        {
            border-color:#000;
        }
    -->
</style>
</head>
<body>

<?php
################################################################################
#
# transparenz.php
#
# Copyright (c) XXX XXX 2005
#
################################################################################

# Resultat[R,G,B] = alpha · Vordergrund[R,G,B] + (1 - alpha) · Hintergrund[R,G,B]

echo '<table>';

$hintergrund = 'FF0000';
$vordergrund = 'FFFFFF';

for($alpha = 0;$alpha <= 1;$alpha += 0.1)
{
	echo '<tr>';

	echo '<td style="background-color:#'.$hintergrund.';">&nbsp;</td>';

	echo '<td style="background-color:#';

	printf('%02X%02X%02X',
		$alpha * hexdec(substr($vordergrund, 0, 2)) + (1 - $alpha) * hexdec(substr($hintergrund, 0, 2)),
		$alpha * hexdec(substr($vordergrund, 2, 2)) + (1 - $alpha) * hexdec(substr($hintergrund, 2, 2)),
		$alpha * hexdec(substr($vordergrund, 4, 2)) + (1 - $alpha) * hexdec(substr($hintergrund, 4, 2)));
    
	echo ';">&nbsp;</td>'; 
	
	echo '<td style="background-color:#'.$vordergrund.';">&nbsp;</td>';
	
	echo '</tr>';
}

echo '</table>';

?>

</body>
 

Neue Beiträge

Zurück