fork download
  1. function detect_img(encoded) {
  2. // Create Base64 Object
  3. var Base64={decode: atob}; // Proper Base64 decoder
  4.  
  5. // Define the string, also meaning that you need to know the file extension
  6. //var encoded = "Base64 encoded image returned from your service";
  7.  
  8. // Decode the string
  9. var decoded = Base64.decode(encoded);
  10. //console.log(decoded);
  11.  
  12. // if the file extension is unknown
  13. var extension = undefined;
  14. // do something like this
  15. var lowerCase = decoded.toLowerCase();
  16. if (lowerCase.indexOf("png") !== -1) extension = "png"
  17. else if (lowerCase.indexOf("jpg") !== -1 || lowerCase.indexOf("jpeg") !== -1)
  18. extension = "jpg"
  19. else extension = "tiff";
  20.  
  21. // and then to display the image
  22. //var img = document.createElement("img");
  23. //img.src = decoded;
  24.  
  25. // alternatively, you can do this
  26. //img.src = "data:image/" + extension + ";base64," + encoded;
  27. return extension;
  28. }
  29.  
  30. imgs = {
  31. "img.bmp": "Qk2KAwAAAAAAAIoAAAB8AAAAGAAAAAgAAAABACAAAwAAAAADAAATCwAAEwsAAAAAAAAAAAAAAAD/AAD/AAD/AAAAAAAA/0JHUnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAA////////////////UE5H/1BOR/9QTkf/UE5H////////////UE5H/////////////////1BOR///////UE5H////////////////////////////////////////////////////////////UE5H/////////////////1BOR///////UE5H/////////////////1BOR///////UE5H////////////////////////////////////////////////////////////UE5H/////////////////1BOR///////UE5H/////////////////1BOR///////UE5H////////////////////////////////////////////////////////////UE5H/1BOR/9QTkf/UE5H////////////UE5H/////////////////1BOR///////UE5H/1BOR/9QTkf/UE5H////////////////////////////////////////////UE5H/////////////////1BOR///////UE5H//////9QTkf//////1BOR///////UE5H/////////////////1BOR///////////////////////////////////////UE5H/////////////////1BOR///////UE5H/1BOR///////UE5H/1BOR///////UE5H/////////////////1BOR///////////////////////////////////////UE5H/1BOR/9QTkf/UE5H////////////UE5H/////////////////1BOR///////UE5H/1BOR/9QTkf/UE5H////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////",
  32. "img.gif": "R0lGODlhGAAIAIABACYmJv///yH+A1BORwAh+QQBCgABACwAAAAAGAAIAAACHYyPqXvgBoJ7rNkYa8pXb/lglMdhkoeUJ4eCmckUADs=",
  33. "img.jpeg": "/9j/4AAQSkZJRgABAQEASABIAAD//gAFUE5H/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8IAEQgACAAYAwERAAIRAQMRAf/EABYAAAMAAAAAAAAAAAAAAAAAAAQFB//EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAawAjI//xAAZEAEAAwEBAAAAAAAAAAAAAAAEAQMFAgb/2gAIAQEAAQUC9G/tCWxZntC2ydz/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AX//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AX//xAAkEAACAgEDAgcAAAAAAAAAAAABAwIRBAASIQVRFCIxMkFDUv/aAAgBAQAGPwJasN07hS3LiySqkchAAkRzGxvo9rrXT05+WEY7A6WyXUmLEBavs9WH3Gj+q+NQgZmb5OdFsPEndCAM9lpqhGgvzcHkd+f/xAAZEAEBAQEBAQAAAAAAAAAAAAABESEAMYH/2gAIAQEAAT8hTB+CdTAxrVHIBoCkAGdpx9VC8XbL7snT5jZ3b7//2gAMAwEAAgADAAAAEBJ//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxB//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxB//8QAGBABAAMBAAAAAAAAAAAAAAAAAQARITH/2gAIAQEAAT8QuOimHFedNNz6rOMpcMA7FYGDCS91tSxBSnIxf//Z",
  34. "img.png": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAICAYAAADjoT9jAAAAXUlEQVQoz7VRwQ0AIQgTwyzdf54u471IGkIUTa4vi0JbHONnmBIASzlJi3qcM9cefVMiCwQHsPRO66cEsxuVpHUGZvguxTFyo8crp7cuq/+4XtHrmvzFbYhkwSr9B/CFOdb5KVaaAAAAAElFTkSuQmCC",
  35. "img.tiff": "SUkqAAgDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJib/JiYm/yYmJv8mJib/JiYm/wAAAAAmJib/AAAAACYmJv8mJib/JiYm/yYmJv8AAAAAJiYm/yYmJv8mJib/JiYm/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYmJv8AAAAAAAAAAAAAAAAmJib/AAAAACYmJv8AAAAAAAAAAAAAAAAAAAAAJiYm/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYmJv8AAAAAAAAAAAAAAAAmJib/AAAAACYmJv8AAAAAAAAAAAAAAAAAAAAAJiYm/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYmJv8AAAAAAAAAAAAAAAAmJib/AAAAACYmJv8mJib/JiYm/wAAAAAAAAAAJiYm/yYmJv8mJib/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYmJv8AAAAAAAAAAAAAAAAmJib/AAAAACYmJv8AAAAAAAAAAAAAAAAAAAAAJiYm/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYmJv8AAAAAAAAAAAAAAAAmJib/AAAAACYmJv8AAAAAAAAAAAAAAAAAAAAAJiYm/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYmJv8AAAAAAAAAAAAAAAAmJib/AAAAACYmJv8AAAAAAAAAAAAAAAAAAAAAJiYm/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAABAwABAAAAGAAAAAEBAwABAAAACAAAAAIBAwAEAAAAAgQAAAMBAwABAAAAAQAAAAYBAwABAAAAAgAAAA0BAgA7AAAAEgQAAA4BAgAEAAAAUE5HABEBBAABAAAACAAAABIBAwABAAAAAQAAABUBAwABAAAABAAAABYBAwABAAAAgAAAABcBBAABAAAAAAMAABoBBQABAAAA8gMAABsBBQABAAAA+gMAABwBAwABAAAAAQAAAB0BAgAHAAAATgQAACgBAwABAAAAAgAAAFIBAwABAAAAAQAAAFMBAwAEAAAACgQAAAAAAABIAAAAAQAAAEgAAAABAAAACAAIAAgACAABAAEAAQABAEM6XFVzZXJzXGdyZWdvXFByb2plY3RzXFNPIHRlc3RcYmFzZXI2NGltZ19kZXRlY3RcaW1nLnRpZmYAAE96YWRqZQA="
  36. }
  37.  
  38. for (const [name, base64data] of Object.entries(imgs)) {
  39. const header = Buffer.from(base64data, "base64")
  40. .slice(0, 16)
  41. .filter(c => 32 <= c && c <= 126)
  42. .toString("ascii")
  43. ;
  44. console.log(name)
  45. console.log(" header:", header)
  46. console.log(" deteted:", detect_img(base64data))
  47. }
Success #stdin #stdout 0.06s 40768KB
stdin
Standard input is empty
stdout
img.bmp
  header: BM|
  deteted: png
img.gif
  header: GIF89a&&&
  deteted: png
img.jpeg
  header: JFIFH
  deteted: png
img.png
  header: PNGIHDR
  deteted: png
img.tiff
  header: II*
  deteted: png