por ahora las que hice fueron para:
- Para el correcto funcionamiento de estas heramientas es necesario usar una funcion que limita el valor de rgb. osea, si es mayor a 255, que sea 255, y si es menor a 0, que sea 0.
- Redimensionar imagenes mas facilmente
- Añadir ruido.
- Crear un fondo degradado con dos colores. Variadas formas.
- Desaturar la imagen.
- Alternar los valores RGB.
- Modificar la saturacion.
- Efecto negativo.
son demasiado simplonas, tienen errores de incopatibilidad aveces jajaj.
Código
function limit($flotaValueRGB) { return ($flotaValueRGB > 255) ? 255 : (($flotaValueRGB < 0) ? 0 : $flotaValueRGB); }
Código
function imageresize($flotaImage, $flotaX, $flotaY) { imagecopyresampled($new_image, $flotaImage, 0, 0, 0, 0, imagesx($new_image), imagesy($new_image), imagesx($flotaImage), imagesx($flotaImage)); return $new_image; }
Código
function imageaddnoise($flotaImage, $flotaAmount = 50, $flotaAlpha = 50) { for($y=0;$y<$yImage;$y++) { for($x=0;$x<$xImage;$x++) { $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $color = imagecolorallocatealpha($flotaImage, ($r + $amount > 255) ? 255 : $r + $amount, ($g + $amount > 255) ? 255 : $g + $amount, ($b + $amount > 255) ? 255 : $r + $amount, $flotaAlpha); } } }
Código
function imagefillgradient($flotaImage, $flotaGradientMode = 1, $flotaColor1, $flotaColor2, $flotaInvertColor = false) { if($flotaInvertColor){ $tempColor = $flotaColor2; $flotaColor2 = $flotaColor1; $flotaColor1 = $tempColor; } 'r' => ($flotaColor1 >> 16) & 0xFF, 'g' => ($flotaColor1 >> 8) & 0xFF, 'b' => $flotaColor1 & 0xFF ); 'r' => ($flotaColor2 >> 16) & 0xFF, 'g' => ($flotaColor2 >> 8) & 0xFF, 'b' => $flotaColor2 & 0xFF ); $center_x = $image_x / 2; $center_y = $image_y / 2; "r" => ($flotaColor1['r'] - $flotaColor2['r']) / $image_x, "g" => ($flotaColor1['g'] - $flotaColor2['g']) / $image_x, "b" => ($flotaColor1['b'] - $flotaColor2['b']) / $image_x ); $x = 0; $y = 0; $r = $flotaColor1['r']; $g = $flotaColor1['g']; $b = $flotaColor1['b']; if($flotaGradientMode!=1 && $flotaGradientMode!=2){ "r" => ($flotaColor1['r'] - $flotaColor2['r']) / $center_x, "g" => ($flotaColor1['g'] - $flotaColor2['g']) / $center_x, "b" => ($flotaColor1['b'] - $flotaColor2['b']) / $center_x ); for($i=0;$i<$center_x;$i++) { switch($flotaGradientMode) { case 3: break; case 4: break; default: break; } $x++; $y++; $r += -$add_color['r']; $g += -$add_color['g']; $b += -$add_color['b']; } } else { "r" => ($flotaColor1['r'] - $flotaColor2['r']) / $image_x, "g" => ($flotaColor1['g'] - $flotaColor2['g']) / $image_x, "b" => ($flotaColor1['b'] - $flotaColor2['b']) / $image_x ); switch($flotaGradientMode) { case 1: for($i=0;$i<$image_x;$i++) { $r += -$add_color['r']; $g += -$add_color['g']; $b += -$add_color['b']; $x++; } break; case 2: for($i=0;$i<$image_y;$i++) { $y++; $r += -$add_color['r']; $g += -$add_color['g']; $b += -$add_color['b']; } break; default: return false; } } }
Código
function imagegrayscale($flotaImage) { for($y=0;$y<$yImage;$y++) { for($x=0;$x<$xImage;$x++) { $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $rgb = (($r+$g+$b) / 3) + $flotaAmount; } } }
Código
function imagealternatergb($flotaImage, $flotaMode) { for($y=0;$y<$yImage;$y++) { for($x=0;$x<$xImage;$x++) { $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; switch ($flotaMode) { case bgr: break; case brg: break; case grb: break; case gbr: break; case rbg: break; default: break; } } } }
Código
function imagecolorsaturation($flotaImage, $flotaAmount) { $flotaAmount = ($flotaAmount > 100) ? 100 : ($flotaAmount < 0) ? 0 : $flotaAmount; for($y=0;$y<$yImage;$y++) { for($x=0;$x<$xImage;$x++) { 'r' => ($rgb >> 16) & 0xFF, 'g' => ($rgb >> 8) & 0xFF, 'b' => $rgb & 0xFF ); $sorted = $colors; foreach($sorted as $nick => $rgb) { if($rgb!=$largest_value) { $colors[$nick] = $rgb + $percent; $colors[$nick] = ($colors[$nick] > $largest_value) ? $largest_value : $colors[$nick]; } } } } }
Código
function imagenegativeefect($flotaImage) { for($y=0;$y<$yImage;$y++) { for($x=0;$x<$xImage;$x++) { $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; } } }
Modo de uso:
Como imagen de prueba voy a usar :
pero la voy a redimensionar con mi funcion, para no molestarlos a ustedes y que no este tan grande, lo hago tan simple como :
Código
$im = imageresize($im, 305, 400);
como ven, los valores que ingreso son exactamente la mitad.
para añadir ruido se usa asi:
Código
<?php require("castgd.php"); $im = imageresize($im, 305, 400); $cantidad = 50; //pueden no ingresarse los valores, pero se usan los por defecto $transparencia = 50; imageaddnoise($im, $cantidad, $transparencia); ?>
y el resultado es este:
al agregar un fondo degradado, esta fucion se usa igual que "imagefill", osea, no se aplica en una imagen externa.osea, se va a aplicar, pero puede haber errores no deseados...
Código
<?php require("castgd.php"); imagefillgradient($im, 1, $rojo, $naranja); ?>
el resultado del modo 1 sin invertir los colres es este:
1 invertido
modo 2 sin invertir
modo 3 sin invertir
modo 3 con invertir
modo 4 sin invertir
la mas simple y facil fue la de escala de grises:
Código
<?php require("castgd.php"); $im = imageresize($im, 305, 400); imagegrayscale($im); ?>
y el resultado es:
pero tambien se puede no solo "desaturar" automatico, sino sacar el color de apoco...
Código
<?php require("castgd.php"); $im = imageresize($im, 305, 400); imagecolorsaturation($im, 50); ?>
con cantidad 50:
y por ultimo hasta hoy, negativo:
Código
<?php require("castgd.php"); $im = imageresize($im, 305, 400); imagenegativeefect($im); ?>
y resulta:
les dejo una mezcla copada xD: