# Posted By

laurikar on 04/04/13

# Statistics

Viewed 470 times
Favorited by 0 user(s)

# Photoshop overlay blending with opacity in PHP

/ Published in: PHP
`/** * Overlay blending * * This function mimics Photoshop overlay blending mode by accepting two RGB arrays, * one which will be overlayed and one which will overlay. The exact equation for overlay * is not known, however Kevin Jensen has a pretty accurate equation available on his website. * Please see http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/ * * @param array \$bottom Color to be overlayed formatted as RGB array, i.e. for red array(255, 0, 0) * @param array \$top Color which overlays \$bottom formatted as RGB array, i.e. for white array(255, 255, 255) * @param float \$opacity Optional opacity to be applied to the overlayed color in relation to \$bottom * * @return array Color resulted in overlaying formatted as RGB array */function blend_overlay(\$bottom, \$top, \$opacity = NULL) {	// Overlay \$bottom with \$top	\$overlay = array();	foreach (\$bottom as \$i => \$a) {		\$b = \$top[\$i];		if (\$a < 128) {			\$overlay[\$i] = (int) (2 * \$b * \$a / 255);		} else {			\$overlay[\$i] = (int) (255 * (1 - 2 * (1 - \$b / 255) * (1 - \$a / 255)));		}	} 	// Apply opacity to \$overlay in relation to \$bottom	if (isset(\$opacity)) {		foreach (\$overlay as \$i => \$b) {			\$a = \$bottom[\$i];			\$overlay[\$i] = (int) ((1 - \$opacity) * \$a + \$opacity * \$b);		}	} 	return \$overlay;}`