Próbuję wymyślić bardziej efektywny sposób tworzenia obrazu 1px na 1px (jpg, png i gif) z jednego kodu koloru RGB, w php .Jak przekonwertować RGB na 1px base64 zakodowane dane uri w php
Poniższy przykład ilustruje jedną z metod wykonania, ale miałem nadzieję na jakiś algorytm, który dostarczy mi takie same wyniki bez konieczności ładowania jakichkolwiek bibliotek lub rozszerzeń php.
przykład:
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');
wyjściowa:
data:image/gif;base64,R0lGODdhAQABAIAAAAQCBAAAACwAAAAAAQABAAACAkQBADs=
Kim bramek (w kolejności priorytecie)
- niskie zużycie pamięci
- Wysoka wydajność procesor
- wysoka prędkość obróbki
wymagania obejmują nośną gif, JPG i PNG. W każdym przypadku od 20 do 50 z tych pojedynczych pikseli będzie tworzone przy każdym żądaniu (każdy piksel jest niezależny od pozostałych).
W jaki sposób można uzyskać plik binarny dla jednokolorowego obrazu 1px?
Twój kod jest bardzo prosty/prosty, jak jest. Niemal na pewno nie chcesz zaimplementować wszystkich różnych formatów obrazu ręcznie. – Amber
A co z wyprowadzaniem BMP? W przypadku pojedynczego piksela jest on tak samo wydajny jak pozostałe trzy formaty i jest prawdopodobnie dość prosty, więc możesz produkować plik binarny bezpośrednio przy użyciu nieco przesunięcia bitów i "pakowania" bez większego nakładu pracy. – deceze
@amber Niestety, prostota nie jest celem tego ćwiczenia. –