As I understand it, pixels lack any actual dimensions so the PPI (pixels per inch) measurements are to do with the image format being used and the device it is being displayed/printed/rendered/used on.
Depending on the image program you are using and how it handles the format, you may never know about PPI and instead only care about the pixel height and width values.
It means it must be 40 pixels by 40 pixels. The 72 pixels/inch is an encoding thing (most programs should default to 72), meaning that your final image should be 40/72 inches by 40/72 inches.
Yeah, the limit is really high. Keep in mind that due to how lossless compression works, if you have any repeated colors (you should if it’s a logo) then that’ll greatly reduce the file size.
Just for fun, is the max size acheivable? Each pixel is 4 integers from 0 to 255 (RGB and alpha because it’s a png), and 2^8 is 64, so 0 to 255 is 8 bits, or one byte. So 4 bytes per pixel time 40x40 pixels is 6400 bytes, or 6.4KB. Even with a bit of header information, I’m pretty sure it’s impossible to hit 100KB.
According to W3 PNG Specifications, it would be 64 bits per pixel for TrueColor + Alpha. Over 1600 pixels, that would be 12.8 KB, matching your (double) estimate.
Maybe small screens (i.e. not 7-segment displays) like the ones used in Cheesy Arena? I am on mobile right now and can’t find an image/video but I’m sure someone here can.
Cheapest would be to just put up a 480-line flat panel computer monitor and blow the avatar up to 480x480.
They could also put up a 40x40 LED matrix, driven by something like a Raspberry PI. But, the dimensions are a bit weird. Commercial matricies tend to be in powers of two – you can easily get a 16x16 or 32x32 or 64x64, but not a 40x40. You’d have to build THAT out of 25 8x8 units or something and then implement your own control circuitry.