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: ;"/>

preferences:
16.16 ms | 402 KiB | 5 Q