Uhhh, WOW! This is actually really well done. I love the labels anchored to the objects in the image. That is so crucial. And the frame editor, the label position editor, I mean this is seriously well done. I think it might be a bit too powerful for average users though.
It was my bachelor's thesis project, so I just kept adding features. There is a simplified version on mobile, in which you just choose a template and change texts.
I'm also interested in the GIF export. Right now I'm only exporting videos using canvas record stream, but I'm thinking about using ffmpeg.js to support different formats including animated gifs
I work for PaperlessPost.com, and for our Flyer product we export mp4s from ffmpeg compiled to WASM, which is similar to ffmpeg.js but optimized for our use case which sounds similar. We have this WebAssembly method working well but iOS 15 (and the other major browsers) now support MediaExporter which might be a better way to go if you have something else to convert these files. This becomes and issue because you can't control the format MediaRecorder is recording to but the management of memory, the image quality, the compression, the performance hit will be more ideal than these other methods. OMGgif is very slow and will produce large files or very bad looking ones. Keep in mind that GIFs limit the colors so something that looks nice on the screen might not look the same after it is saved. The other thing to look out for is the WebCodecs APIs which should be the ultimate way to handle all of this in the future but it is only working in Chrome I think https://github.com/w3c/webcodecs
It looks nice, but some people might be instantly turned off by the new meme dialog.
I was pretty tired so I didn't read everything that carefully, and just pressed the "upload gif" button expecting file picker, but instead I got an error message that the upload failed. I actually thought your webpage was broken.
Only when I when back and read everything carefully did I realize what had happened. Two and a half suggestions: In my mind upload means its transferred from my device, so consider changing the text to "fetch" or something. Handle empty url as a special case. Like maybe just highlight the url box in a red border or something. And finally the half suggestion: measure whether uploading (my guess, but idk) or fetching is the more common usecase, and emphasize that one visually.
Great job, especially the UI, which is clean and simple. I like the Tools section of your thesis - not being up-to-speed on web dev, I understood the which? and why? of your tech stack in under 5 minutes.
Neat. I have a real business problem to solve using very similar techniques if you are interested to discuss. Not memes specifically, but with the image and text mix.
I've tried pretty hard to get it to work with ffmpeg and mediaRecorder, but both of these options are quite limited at the moment and the results just weren't good enough. Other option would be to go server-side which I don't want to do.
I was unaware the rendering could and was being done client-side! Given the limitations I can see why gif would indeed be suitable format. You've tooled a compelling amount of functionality into something very lightweight and convenient, and that's a more than acceptable tradeoff.
How? Of course asking OP to add features for a site he offers for free is wrong, but I don't think he's wrong about gif. As far as I know all the "gif" sharing sites like giphy and stickers in chat apps like discord, etc actually use webms/webps.
Twitter for instance automatically converts gif to h264.
However there is a point to be made that iOS only grants VP9 decoding to Youtube, certain colourspaces fail to decode on Android etc. ergo gif is a safe default.
> The total cost of this tool is: 60$ (yearly, domain) + 60$(yearly, hosting) + more than 150 hours of programming (which would be about 4000$ from where I live). Revenue is non-existent. I've decided to leave the site ad-free because ads suck but now it's only eating money so please donate. My current plan on getting a payout is getting Elon Musk to use it and hoping he will buy me a Tesla.
That is a seriously good result for 150 hours give or take. I wonder if Elon peruses HN...