Skip to content

Commit a3ef381

Browse files
rmodels.c, LoadImageFromCgltfImage() : fix base64 padding support (#4112)
* rmodels.c, LoadImageFromCgltfImage() : fix base64 padding support This should fix the issue related to `.gltf` embeded image in base64 format, by ignoring `=` padding and calculating the data size in bytes correctly. * follow guidelin convention * try to follow guideline convention as much as possible * clarify comments i hope it's clear ennough
1 parent 84971d8 commit a3ef381

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

src/rmodels.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4815,7 +4815,9 @@ static Image LoadImageFromCgltfImage(cgltf_image *cgltfImage, const char *texPat
48154815
else
48164816
{
48174817
int base64Size = (int)strlen(cgltfImage->uri + i + 1);
4818-
int outSize = 3*(base64Size/4); // TODO: Consider padding (-numberOfPaddingCharacters)
4818+
while (cgltfImage->uri[i + base64Size] == '=') base64Size--; // Ignore optional paddings
4819+
int numberOfEncodedBits = base64Size*6 - (base64Size*6) % 8 ; // Encoded bits minus extra bits, so it becomes a multiple of 8 bits
4820+
int outSize = numberOfEncodedBits/8 ; // Actual encoded bytes
48194821
void *data = NULL;
48204822

48214823
cgltf_options options = { 0 };

0 commit comments

Comments
 (0)