• 2 Posts
  • 67 Comments
Joined 1 year ago
cake
Cake day: July 9th, 2023

help-circle







  • That’s a big one, generating thumbnails client-side rather than running an imagemagick instance on the server to re-size pictures on upload

    I used it to generate hashes of the pictures as well, once.

    Adding watermarks too. There are virtuous watermarks as well, I remember having to code up a transparents watermark over people’s IDs to make sure that when they submitted their renters dossier (it was a real estate renting service), it couldn’t be used to commit identity theft by the homeowner later down the line or re-used for something else.


  • Ah nah Canvas is used for so much stuff and it’s sometimes way under your radar in stuff you wouldn’t at all expect

    For instance

    • one-loop.github.io, opensource reddit front-end that allows you to look at reddit, but it looks like you’re reading outlook from a distance
    • For people’s avatars, it sources images from thispersondoesnotexist.com
    • You can’t just “download” a picture from another website, because that violates “CORS”: If it were allowed, you could just download their face from facebook.com, scan if they have something hosted on localhost, …
    • You can use an <img> tag which fetches the image, but your javascript cannot access the image’s data. It doesn’t belong to your page

    I’ll let you look at the comments to see how they circumvented this

    async function generateFacePic(commentData: SnooComment, ppBuffer: HTMLImageElement[], displaySize: number = 50): Promise<HTMLCanvasElement> {
        const imageSeed = /* a random number */
        const imageElement: HTMLImageElement = /* someone's avatar */
    
        // Purpose of copying: A single <img> tag cannot be in multiple spots at the same time
        // I did not find a way to duplicate the reference to an img tag 
        // If you use Element.appendChild with the same reference multiple times, the method will move the element around
        // Creating a new <img> tag and copying the attributes would work, but it would fetch the src again
        // The image at thispersondoesnotexist changes every second so the src points to a new picture now
        // Since the URL has a parameter and hasn't changed, then most likely, querying the URL again would
        //     hit the browser's cache. but we can't know that.
        // Solution: make a canvas and give it the single <img> reference. It makes a new one every time. It doesn't query the src.
        const canv = copyImage2Canvas(imageElement, displaySize);
    
        canv.classList.add(`human-${imageSeed}`);
        return canv;
    }
    

    I’ve seen canvas being used for github-like random avatars, graphs, logos, to create dynamic previews of images on the page in online shops, …









  • Any advanced user will face dozens of hoops a month on Linux

    It’s never the simple things, nor the very difficult things. It’s small, niche workflows & use cases of your computer that you “sometimes” do, like, I don’t know, editing a PDF, installing shareX or an equivalent that can take a screenshot and upload it to imgur / run OCR on a part of your screen, running a Space Engineers server for your friends, running SSEEdit.exe to dump the contents of a potion overhaul mod in Skyrim and calculate which are the best ingredients to plant in your Skyrim greenhouse and garden for maximizing gold output.

    No need to look up ways to do any of those, I’ll get different ones next week, and then more the week after.

    You know, the millions of things that no one ever does except that guy in 2019 on StackExchange, but that you will have to do and then never again.



  • “Innocent until proven guilty” has nothing to do with it. When a cop stops you he’s not indicting you. Switching your gas off remotely replaces chasing calling in reinforcements and chasing you over several blocks when you start speeding up, or flipping your car over. Both of those already impair or override the driver’s input quite a bit.

    Having the opinion that your driver input should override the cop’s order to stop, and that society should trust you to stop instead of putting a kill switch in your engine is an insane opinion, and prime driver entitlement.

    And I would love the same for drivers without insurance, license removals and cars that didn’t pass the tech inspection