• mke@lemmy.world
    link
    fedilink
    English
    arrow-up
    5
    ·
    edit-2
    5 months ago

    I think I know what you’re talking about, and I think you might have misunderstood a few things. I’ll explain my point and I’d appreciate it if you could confirm later whether it helped, or if I’m the one who misunderstood you.

    “Saving as…” is, usually, just for setting the name of the file. The full filename, extension included. The extension is just another part of the name. It doesn’t define what rules the file’s contents actually follow. They’re for other purposes, such as helping your operating system know which software to use when opening each file. For example:

    User double clicks a .pdf System: Oh, I should try opening this in Adobe Acrobat.

    But that doesn’t mean the file is actually a PDF. You can change the extension of any file, and it won’t automatically be converted to that extension (unless a specific feature has been added to make that implicit conversion). You could give an executable a .pdf extension and your system might then try opening it in Acrobat. Of course, it won’t work—there’s no way the system could have automatically made that conversion for you.

    So you might wonder, why does your (fake) PNG—which is really just a webp with an incorrect extension—still work just fine? You can open it, view it, send it. What’s the trick?

    Thing is, the software that actually deals with those files doesn’t even need to care about the extension, it’s a lot smarter than that. These programs will use things like magic bytes to figure out what the file they’re handling really is and deal with it appropriately.

    So in this scenario, the user could save a webp file as PNG.

    funny cat.png (still a webp!)

    Then they might double click to open it.

    System: How do I open a .png again?

    • .webp -> try the image viewer
    • .jpeg -> try the image viewer
    • .png -> try the image viewer (there it is)

    And finally, the image viewer would correctly identify it as a webp image and display it normally.

    Image viewer: reading magic bytes… Image viewer: yeah, that’s a webp alright

    The user might then assume that, since everything works as expected, they properly converted their webp to a PNG. In reality, it’s all thanks to these programs, built upon decades of helping users just make things work. Same with Discord, Paint.NET, etc. Any decent software will handle files it’s meant to handle, even if they aren’t properly labeled.

    If you were to check the file contents though, using a tool like file, czkawka to find incorrect extensions, or even just checking image properties, it should still be identified as a webp.

    I didn’t try it myself as you said because, to my understanding of files and software, doing so made no sense. But again, do tell if I got something wrong or misunderstood your comment.