0

I'm tring to resize an image that came back from a postmark webhook. I believe the image was converted to base64 (and that's what the API docs indicate), so I'm trying to use this code to process it. This uses the sharp library to convert, and I'm also retrieving the exif data using the exifr library. The exifr library seems to respond with the correct lat/lng, so it appears that the converted data is perceived to be a correct JPEG image buffer by that library. But, the code crashes inside the sharp library.

import exifr from 'exifr';
import sharp from 'sharp';

const converted = Buffer.from(a.Content, 'base64');
const metadata = await exifr.parse(converted);
const { latitude, longitude } = metadata;
console.log('Metadata is', latitude, longitude );
const buffer = await sharp(converted).resize({ width: 640 }).toBuffer();

When I run this, I get this, and then the error:

Metadata is 28.896072222222223 -82.58978055555555
node:internal/process/esm_loader:97
    internalBinding('errors').triggerUncaughtException(
                              ^

[Error: Input buffer has corrupt header: VipsJpeg: Corrupt JPEG data: 38 extraneous bytes before marker 0xfd
VipsJpeg: Unsupported marker type 0xfd]

This is the beginning of the JSON provided to my webhook.

{ "Content": "/9j/4WvmRXhpZgAASUkqAAgAAAANAAABAwABAAAAAAwAAAEBAwABAAAA8A8AAA8BAgAHAAAAqgAAABABAgAIAAAAsQAAABIBAwABAAAAAQAAABoBBQABAAAAuQAAABsBBQABAAAAwQAAACgBAwABAAAAAgAAADEBAgAVAAA\
AyQAAADIBAgAUAAAA3gAAABMCAwABAAAAAQAAAGmHBAABAAAA8gAAACWIBAABAAAA0AMAALEEAABHb29nbGUAUGl4ZWwgNwBIAAAAAQAAAEgAAAABAAAASERSKyAxLjAuNTIwNDM1ODE2emQAMjAyMzowNDozMCAwOToxODozMQArAJqCBQABAA\
AA/AIAAJ2CBQABAAAABAMAACKIAwABAAAAAgAAACeIAwABAAAALwAAAACQBwAEAAAAMDIzMgOQAgAUAAAADAMAAASQAgAUAAAAIAMAABCQAgAHAAAANAMAABGQAgAHAAAAOwMAABKQAgAHAAAAQgMAAAGRBwAEAAAAAQIDAAGSCgABAAAASQMAA\
AKSBQABAAAAUQMAAAOSCgABAAAAWQMAAASSCgABAAAAYQMAAAWSBQABAAAAaQMAAAaSBQABAAAAcQMAAAeSAwABAAAAAgAAAAmSAwABAAAACQAAAAqSBQABAAAAeQMAAJCSAgAEAAAAODI5AJGSAgAEAAAAODI5AJKSAgAEAAAAODI5AACgBwAE\..."
}

Is there something wrong with this file header? Do I need to convert the base64 data into an intermediate format first?

I then tried with another image and this one gets a different error:

[Error: VipsJpeg: Corrupt JPEG data: premature end of data segment]

I'm stumped.

     {
       Content: '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-05-27T21:32:57.845858254Z RTe1bo1nY2NAAgZUrv8AGnVUmb3EqWKOxoHT6YiFBT5T7yvVX8KE29Lk+SqSo5UTxxUV1cNwnoZQreQeR6U02+1tR2kcYUK5PKJ5FbSwn3RxQTVWtI2nbc4uQ6tCsHhCdyvuGam11rO3aMtvmOLy8s4QhIyTShpPRzurpBu99aJjrVuajlXr0rv/ACAzf6LKeltFva5mG8zVvNxXeG0OjaopH38VoGpNRi2tIt8MlOwBOB6CiU5P0fblBkhGxICQMYGOlIemwq/XV0yEnAPJHFeg1x9Yw2e0qlqQ/JBUeo3GmV14tI2IB46jFeBptgJQjhIHzpb1jreNpK2PSwgOrQAEo7qV6UWlj9ILgvxC1e5ZImzJ8sjKiBkgY9KXvD+zNasccmvsLajJUCjzUlIX8gai09paZ4gX1y7XV1w2tKtyWnAQFqx0A9B61qqBGt7ZSkCOw2nJIHupTSgOR5GJALnk3UnZ9ms0IkBLLDac5PSs5YdTrnULry1rENo7W0YIyfU18S769r65uQoy9lsbJCC57pcP9Y4/KnaxWGLaW/6O0SnoCckk9+tF/wAh3yNDqQSSnTEF1QVkpHXOM/L1rJLzbWte6jYbWnz0KV03ZAPHp8qJ+KutHbnfRYILXtElOElO07UkjOfj1p08NdCtaKtZ3oSq4SP2j6xzgnnFJI5RO3fj9Qh7BbPDfTnnpQGmWUhSgOqj6fr+dLGhIk636Wcmukl66LW6VOq52EnafzB5+NXNXB3WOo7fpqO6kJCxKlFYOPLzwn5H3s/KhvjbrVvTrDdphKSZrmRgdEpHy+deIAEY1KNRM1jq6RqbUFr0zaXCzGbePmho+66vIHPqBW32OG1Y7W02lCQ8G8OOgcqPf7jWd+DvhszZmjeLid1weG5tKudgOOfnTZ4i6lb0tp6Q6JKGH3BsaWsZO71xXVWhZgpoc2mQeI1zVr7xEbtDaHCwyvYr3ux+tj7xWtwbGxYIKGYzDYcSBlOMAcdD3rNfCWxOuMzNQzVCbKWshp51PHzGO/NaNbr95UlxUhwrPX4iuKL2ZzELtj9z6tlkl3O4syZMdqAlvICELKyoY5PQVY1HKbhMFlCtqlDCVLH1viaJw7sH0KcRjAGeTis51LqNqfKmecsNoig5IORgbjgfHr+NMc8RKW0IneNbscaai22OfNlzHAtLaF++QevA+VJGodLWjSGjoC7rLcYUtYXsdfAQteMkAAAkDPrjpTFpqyL1Vd5d7fUsp5QwhWMBIzxSf/4goVjs7lsMphtclTRXvSokqHbIzgcjv6fCpUHJpPjBLEwbq7XVosfh+plFxYfk3FZQCjKsN85TwOPn05pW0h4mRrFDlTJDS5MwuBLCSklJPQAnt1yaA3EP6kujPmwWWWGY2WwlOUpHPvc/d+FVLfAjOT20yCoRm8qKckYzyT+WaaaJqX41Ajp/OBdP7Jj/AEzXU1fRlv8A7kPzrqKhH8J+1n5LUFsntS3drv7e2pmKrL6uEnHA+dVr9fEOqDbJ3E/An+FXLHa0Qmg++QkrGcGj5XM8sD1LVqs6LVFG9SXnlcqcxg/IUF1Vrtq0x1tsZcfAwEpGeaq6s1sWJCYFsSX5iztQjb7ufjU2ndCCKW5dwS27KzvOOQk0Q3F8uXqsF6X8MHLs8i/agdTKfWAtpg5wkfH+FO8mWi1scYS2kYFXHnCEEnokdqz3Vd3kXF5UdpB8tJ7dzXjqFQxiWrrdpl2cS0xnYo9U96aNPWVu3xkjjeeVKIwaFaGtDkSGp6QcqURhJ6iodaa0a09CcDagXSMAZrlwQa9jJfETW8fSlv2R1IeuDvuoTnhA9TSJpDTErWspNyvK3lMeZubZJyHDjqfhVbRmiZviDdDd7spTdtSrICuCv5fCtqjRY1vjpbZG1tCdqUp6AYwBXQL7gqDkNmclCYkZDaEhDaAOBwMVnmtNRruDi7fB6kbXFdz8KK6w1UYqBHjn9os4yRwBVHTVgTEHtLv7VZJVnrXWP0Ixt6EYdFaNatFsbdkZDpAJO4cUC8Q/E8Wgm32lCS/t2+YroD8qk1hqyTBti0RwEjByfh+FZJibcp8eW4w55bjgSlSkkhRyOhpDNuhFO3EcRNJ8LNGuMSJd7uH7aZIXkKUd21OOgz0Ga0Z9YDTiyQlKUlRKuAMA/wAKoWVkw7W0ndgbQTQDxI1A1Z9KTEl3at4BoKSN3U4/jTaCLcctY0uA7Deo9uc1DqcPKWHE+Q0g9DhQJ5+BA/E1n+jLRL8TdUSL5eU5itr7ghB44Sn4fwrtTxp06ZbdGWqQ24++o+Ypr6raOqio/cePhWqPQY+lLXCtcYqDTCAkqAyVHHKs/E81OCTJwDkNxsRhttCGvqAYGBx8KxLxAhP+JmvodjjocDDJwt5HCQnGVH934Volw1IxY9LzZzpW6WG1KDWMbjgkD8qUPAmHMkR7nfpqCn2twiOkknYkEg/iSR8hTvy1GvshZoyrVA0xZ49tjoCWYzYbwDwcDGaAoRElyh/RG3MnhRJzn1oheUrlJVyfu6VRt7qYricgZ6iiqo6vqHLt7JZrM44VFKwnI3c5PyrGNettyrGzDtrbki5TFAKSkjOD3+HzrQ9YXcCKQ8B5eDwR09ax3SciRP1tMuG8CCwkspCCDvJyCT8ABU2Z71FObNR0tcxzTTKYDrLC7ey0hrzGQS5wn3gOcYzkdKx1Ohbn4za2dvN6xB08w6GWYzSsrcQnPHqM9/nW1vPNQbJJlylIJXlLaD025xk/nWVXvxh03pa33JuAtKpDTP7NLbgCivHBCe/P/DXMdgXCUEdSleYluXqPUj/kBuzWxhMVtaF4ypJAIHzCj+ArPbrbIkV9lSy5HS8pCXCkbvKbONwx64JFU9G6pF30c/bCl4PSZQQ846OAVKA455+sOf4Uwa3bSi8xQ0gNlQSMKG0qVjr+gpK2MtGaOIetzYfK0T/iUr/Kr/trqv8Al2D+zg//ADR/Guq3UfNOtMBpCvaJGClHZR70Hveqpeprj7Ba87GfdUtP6Vel22dqYJZZLkONnCyCCSPgaadO6fgaejBqMyjeTlThHvLPqTXlSYKgtqUdLaWasbfnuJLs5wYLilHKR6CmNDqwoA8j0JqygtoG9w0val1ALa2oNDLiugqggL3KaCiLviJrw2dlbEQb3j7pBNUPDh1d7fVIkJS8M7jxxSxerRJu8guqTlSzxxVhvUL2gbX5KEkPrHuoT9ZZz29ah5kmRFiWszRtcaxjaWtqggBLpT7oSR7v3Vn2ltJz9bSvpS8Dy7aVbkNL+s8O3yFXdIaEm3+X9N6nKnD9ZmMsYxzxurSsqeUGkJwAMcDGBVCAnuOCF9mfcXDDSGGGw20j3QEjAA9K6bLagRnHXFDIGdo6k+lXEIRDZ3LGSBSBqC4i5zlNlbiEg4SlAyCaax4io4njoSjGjrv19Q4+ndFByUDvTneblEtMIJS2hpIHJ9BVC1MJtEYOrIwOeeppD1RGnar8xAmlI805bCBtKM+vWpyYr8ZLN1e/d31LhQ0Jgx1bXHniCV8dAO/rV+w3RNznAyEBSE42t7QUn0wOxFSXSXDt1nbiojtx20pIWpI5+fzqnpScYjjan4/kJdJLK1j/AKifX/nrSh3uABvc0cOFbIQApIxWTeL96jQHmoSkb17C91xj0/WtNmXxmBCLx+qlJXnOenesajWp/wAUNfpua0KTaEHOzssDjHNPY3qMyG/UR68IdE/yf0+9dbg04u63JQUHHeqG85CR6ZBJNFtUnyvKIJO7jjtxRyVcmwA0CTt4AJ4AoZeUB+CtzaSQMjHWjC+tRgWlqZxqxUzVT8OwW5LzKhla1oHurUT3+Vana4CrHY4MAnd5DSWyrAySE8nj40m+G7L0S6SJL76nlrSpASr/ANMZ7elPEyRkKIG4Y5OO1cQQcY+4Gv1yTFa2oGVk9BVC2xVy3POUnAJzgdKH3KULhOCQQnYcAEEUUnSlWWwPSAstlKCcpHPHWgZtwrqInjXfm4ENEFhRdmuHyi2k+9yetRWPTkbT2mQ0hsJluZWtak4UCeSKXPDl/wDnBvT93uEdbqIispefTwVnv8cDkfOnV+LLmuKSlaPLCveUtXJ+IHepWFmTqOR5zK/GufFTZ4TMmRJbZUn9pFbXhC/mRye/GR++sAetbJ0qtxvDQfWry05OfdPPX5da0/xZama81kxY7T5xYiLxIdUjCc5x1+WeeOtUNY2yC5qGDpOFDROdiskqUy5s3OqzlI5GcBB+/tTyeCASxSFEjgWi2aKa03DM1D01LgmPBKOSgjISevUpSMfPtzXzqFU/W11YU8+ttvekNoQOQOByfvP5UY0JppNyus69XWKSqOj33lfUQB2x3OCPypq0rpNm86qZabUkMtlLuQrk47YrLXLWTcuXachL38xUL1X+VdW2fS8T+on/ACorqu+YQOZj75mPQfKuSrCga8A44/MV8nKSBjNagFSOSupKkKUDmle4Me1PqWsDjoO9Mkp4NR8uKAHXBoIFNOv7uCCcUp9iC3VRB1FHu3taDEbIjpPKwaO6csLE11uTNaQ68k5SpaQSg47Gjt4j74ag3jCRnAoRZLiXXPKSk5HXFShdxHHe46rUNgQPdGBirEUNNJ90bjjkihrSlL2gg7R1qyqQGWVkjJPSrhoSsUBBWpr6ltRaaBUo8cnpQS12hx+SZBKNoGTuOBUD7pVPWpWMg9DUr02TNaEWKkJBPvKqdjZiDszy9JkXIKYjOFG3jKa8sNpRbWFIcUXHT1V3q1LSmwW7crAeVVGzvuPxnFLJJJOFDqKWYB7g3UqWZ0hiK0rcpxzBHwq9qmzrZsjT6Dgx2wkBPQAeg/50oFbY7j2sQVHc03jHPX40f8Sb19HWcQmjulSz5baR2+P5ihg/uJsB2Vq59NtdlLaaynepAyoDP6GtKtFmj2OGlmOn3Up2579KyqyRHtKLQlalCQ7hS1lWea06HMcnREndu9eKbi2dwsQ3uTrUlKwEgqOetXnXj7EranJNUw1sQO6sVfbKfLCTx91VVqURFhSHLfdPKH2ic/Gnwkx4anloT9XOc85pUvcFKJiXW0+919OKtqvEq4w1RnSlQxj3UAHH3Uj8YA1F19ap948wuHbnkmvvXlwZa0+/DVKDfmNkblJI4x8alkWkwT5mU5yB76sA/Gs1ulhvGq9XMtSpC0xkYIS2sYOD3+GKkLRBJGhHTQWmZOmNB71spa9pWXEJSfsDjJ9Of0FSWC1TZrj7614SFfs1K9PlVjVj82NHjQnXsxUNgIQEgfietKVz8T37K+LaIKgVt8P78EduB36V5RZjAKoCUrZo033Vt6mS7mowYMhLRZiqKGnVkdFD7WKzZjTUrUeutSybdmP9GKUUqQMhWFFH6pz99a3oSG2uzSVstpbQ+rzSSScrxyqqWgz7DcNSR21oQ485vUoDnJz1+QwKTkbdSs4wwESNLuNWTRupIV0dS5MAQ6yl5O3cs8EfEDCaEaEau027SlWh7yH9u1atwG1PPqf0ps8Q9NKuWqrfHQ2H2VgOrIPQDGT8CefxoToODJtWrJUw+zojyP2SA69t2p5GT+ANScRZM6bWhDf83Vz/ALAf5RXVrnt0f/Gkf66P411eoT1zSTL3jG3BqquQrcM4GK5fCM96iPvL57mvpImV7wlciKccJHOfhQe3DzVYUrFGrwot25O3jKiDS8yooayng+tTMYljuFJkgtRXW0e8ojFJ1teftc1bi84Jz99MiOSD3INB7j/9SPnU7GjBJ3Hi1XNt2KHMAk9a8edXL3hHHPFBLGMEoz7vpTHbUgN5xzj/ALqtx+wlI2IsuWGUZ27GUnqT3opFjN248YKj1FW58hYVgHFVUDeQCe3XvXeAgEUYL1YoPxknBVt5oLbb43ChrDgPu/1eppgvCB7A+vuE/vrPGP28goWcjd++o8mjJ3NGMFnkxmjJu0tXkIRlXxxUWntNr1RfF6luBUAMCLHJICUjjcfj3qCLCalvtsOpy0s4UkcZ94CnZDhaYbSjCEDgJA4HNFjHKHjFwLquwNXBkPIVsU0M8DrQiwaibQTECyFp4we9NM0lTW0ng9ayaX/R9SpLZKcgk4//AB/iaNhwOoTDidTV2pK3CMAnvV4OPbMKbITVG0nKGviOaNzDlpI+FVLsRsXrvuS2pwDOPhVOzXNBQtW3CxRlSQ7HAVyCrFLdvQNy/j/E1Pk0YB7lS+yJc2Tt3YRjANWNL6Vh2p36ScKnZhyQsqP4YzjvUF5UUtoIODir8R1QhAZ6gVKBZggWYC1FOeu11RHUn3QrqKW/FLTDUZdilD6+9e8HBzxwM/A/kTWhRorSnN5bSV+ppS8W/fNpaPDZGdqeAD73p/7RTUG4UA+BtyFw0rJjrCz7NIWErXwpSVFRBP5fjQ9zfaNVXTGAiad2eiuMnilHQdwkWa/PRIjqm2Hlq3pznPuKOaYNauli/wBpcTjeptaiT3O3/wDY1FnFORKcTWgM8ujT7+o40tcsBlKdnknJV9Ugc/f+VWdVab9otmyK3sKRvKk9cgdBUuokpbiMuADeATn7qbLcgCyOKJKlBPG7ntS0F3Ccbn58xc/71L/1FV1ah5DX9ij8K6j4iT0Z/9k=',
       ContentLength: 17234,
       Name: 'PXL_20230526_162800583~2.jpg',
       ContentType: 'image/jpeg',
       ContentID: '1885f2098293dec71301'
     }

The weird thing is that if I use this code to write out the image to disk, the file size does not match. In the JSON above it indicates it is 17234, whereas the file on disk becomes 17254 if I use the following code:

const buffer = Buffer.from(img.Attachments[0].Content, 'base64');
fs.writeFileSync('foo.jpg', buffer);

I followed this error code and it says the JPEG has a starting and ending code like this:

A simple way to check if the JPEG data is complete or not is to check the first and last two bytes for FF D8 and FF D9 respectively. Those two bytes identify the start and end of a JPEG file respectively.

This code shows the first two bytes are correct, but there is nothing like the end byte sequence:

console.log('First', converted.slice(0,4));
console.log('Last', converted.slice(-30));

Results in this:

First <Buffer ff d8 ff e1>
Last <Buffer 2d 05 dc 27 1b 9f 9f 31 73 fe f5 2f fd 45 57 56 a1 e4 35 fd 8a 3f 0a ea 3e 22 4f 46 7f f6>

xrd
  • 4,019
  • 6
  • 30
  • 39
  • 1
    Is it possible that the API you're using actually emits broken jpegs? Or do the images load when you write them to disk – Evert May 27 '23 at 22:53
  • That's a good question but if i push the files into an S3 compatible storage (mínio) they seem to work fine. It's really strange. – xrd May 28 '23 at 03:45

0 Answers0