3v4l.org

run code in 300+ PHP versions simultaneously
<?php $pixelDataArray = array( "11101010111", "10101010101", "11101110111", "10001010100", "10001010100", ); //First to convert the input into a pixel array or bitmap data, each line on the pixel array should be dword/32bit/4bytes aligned. $pixelWidth = strlen($pixelDataArray[0]); $pixelHeight = count($pixelDataArray); $dwordAlignment = 32 - ($pixelWidth % 32); if ($dwordAlignment == 32) { $dwordAlignment = 0; } $dwordAlignedLength = $pixelWidth + $dwordAlignment; //Now we can proper align the string then convert it to a array of 1 byte integers and after to a binary string. $pixelArray = ''; foreach (array_reverse($pixelDataArray) as $row) { $dwordAlignedPixelRow = str_pad($row, $dwordAlignedLength, '0', STR_PAD_RIGHT); $integerPixelRow = array_map('bindec', str_split($dwordAlignedPixelRow, 8)); $pixelArray .= implode('', array_map('chr', $integerPixelRow)); } $pixelArraySize = \strlen($pixelArray); //Then lets build the color table $colorTable = pack( 'CCCxCCCx', //blue, green, red 255, 255, 255, // 0 color 0, 0, 0 // 1 color ); $colorTableSize = \strlen($colorTable); //Now the bitmap information header, for better support BITMAPINFOHEADER (40 bytes header) will be used. $dibHeaderSize = 40; $colorPlanes = 1; $bitPerPixel = 1; $compressionMethod = 0; //BI_RGB/NONE $horizontal_pixel_per_meter = 2835; $vertical_pixel_per_meter = 2835; $colorInPalette = 2; $importantColors = 0; $dibHeader = \pack('VVVvvVVVVVV', $dibHeaderSize, $pixelWidth, $pixelHeight, $colorPlanes, $bitPerPixel, $compressionMethod, $pixelArraySize, $horizontal_pixel_per_meter, $vertical_pixel_per_meter, $colorInPalette, $importantColors); //The last part is the file header $bmpFileHeaderSize = 14; $pixelArrayOffset = $bmpFileHeaderSize + $dibHeaderSize + $colorTableSize; $fileSize = $pixelArrayOffset + $pixelArraySize; $bmpFileHeader = pack('CCVxxxxV', \ord('B'), \ord('M'), $fileSize, $pixelArrayOffset); //Then just concat all into a single string $bmpFile = $bmpFileHeader . $dibHeader . $colorTable . $pixelArray; $bmpBase64File = base64_encode($bmpFile); ?> <img src="data:image/bitmap;base64, <?= $bmpBase64File ?>" style="image-rendering: crisp-edges;width: 100px;height: ;"/>
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
<img src="data:image/bitmap;base64, Qk1SAAAAAAAAAD4AAAAoAAAACwAAAAUAAAABAAEAAAAAABQAAAATCwAAEwsAAAIAAAAAAAAA////AAAAAACKgAAAioAAAO7gAACqoAAA6uAAAA==" style="image-rendering: crisp-edges;width: 100px;height: ;"/>
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 <img src="data:image/bitmap;base64, Qk1SAAAAAAAAAD4AAAAoAAAACwAAAAUAAAABAAEAAAAAABQAAAATCwAAEwsAAAIAAAAAAAAA////AAAAAACKgAAAioAAAO7gAACqoAAA6uAAAA==" style="image-rendering: crisp-edges;width: 100px;height: ;"/>

preferences:
136.6 ms | 402 KiB | 150 Q