Estoy tratando de encontrar una manera más eficiente de crear una imagen de 1px por 1px (jpg, png y gif) desde un solo código de color RGB, en php .Cómo convertir RGB a 1px base64 datos codificados uri en php
El siguiente ejemplo ilustra un método para hacerlo, pero esperaba algún tipo de algoritmo que me diera el mismo resultado sin tener que cargar ninguna biblioteca o extensión de php.
Ejemplo:
function rgbToDataUri($r,$g,$b,$type)
{
$im = imageCreateTrueColor(1, 1);
imageFill($im, 0, 0, ImageColorAllocate($im,$r,$g,$b));
ob_start();
switch($type)
{
case 'gif':
imageGif($im);
break;
case 'jpg':
case 'jpeg':
imageJpeg($im);
break;
default:
imagePng($im);
}
$img = ob_get_contents();
ob_end_clean();
return 'data:image/' . $type . ';base64,' . base64_encode($img);
}
echo rgbToDataUri(0,0,0,'gif');
Salida:
data:image/gif;base64,R0lGODdhAQABAIAAAAQCBAAAACwAAAAAAQABAAACAkQBADs=
Mis objetivos son (en orden de prioridad):
- Bajo consumo de memoria
- alta eficiencia procesador
- de alta velocidad de procesamiento
requisitos incluyen gif de apoyo, jpg y png. Entre 20 y 50 de estas imágenes de un solo píxel se crearán con cada solicitud (cada píxel es independiente de los demás).
¿Cómo se produce el binario para una imagen de un solo color de 1px?
Su código es bastante simple/sencillo como es. Es casi seguro que no desea implementar todos los diversos formatos de imagen a mano. – Amber
¿Qué tal dar salida a un BMP? Para un solo píxel, es casi tan eficiente como los otros tres formatos y es probablemente lo suficientemente simple para que pueda producir el binario directamente usando un poco de desplazamiento de bits y 'empaquetado 'sin mucho trabajo. – deceze
@amber Desafortunadamente, la simplicidad no es el objetivo de este ejercicio en particular. –