Giter Site home page Giter Site logo

corbindavenport / imageshare Goto Github PK

View Code? Open in Web Editor NEW
79.0 3.0 4.0 9.83 MB

A lightweight web app for uploading images, created for the Nintendo 3DS and other legacy web browsers.

Home Page: https://theimageshare.com

License: GNU General Public License v3.0

PHP 89.41% CSS 9.44% Dockerfile 1.15%
imgur webapp image image-upload image-uploader 3ds 3ds-homebrew wiiu wii-u wii-u-homebrew

imageshare's Introduction

ImageShare

ImageShare is a lightweight web app for uploading and sharing images. It was originally designed as a replacement for the Nintendo 3DS Image Share Service, accessible through the Nintendo 3DS/2DS Browser, but it also works on many other basic/legacy web browsers. After the image upload, a QR code is provided to scan with another device.

Features

  • Uploads images to Imgur or ImgBB and creates a QR code for the link
  • Fast performance using server-side PHP code and no client-side JavaScript
  • Does not require account creation or a login
  • Compatible with many old and low-end web browsers¹ using either HTTP or HTTPS
  • Self-hostable on any server with Docker (see DEV.md)
  • Enhanced support for iOS, Windows Phone, and Windows 10 Mobile
  • Automatic game title detection for Nintendo 3DS uploads (example)

How to use

Just open theimageshare.com in your browser to access ImageShare. If your device can scan QR codes with a camera (press L + R buttons on 3DS home screen), scan the below code to open ImageShare.


Can't connect to ImageShare? Check that the date and time is correct on your device and try again.

Once you have ImageShare open, bookmark it (tap the star button on the 3DS) for easy access later. If your device supports the SSL certificate, you can use ImageShare over HTTPS instead of HTTP for added security.

Privacy Policy & Terms of Service

ImageShare uses Plausible Analytics to report anonymous usage data, including how many times the app is used and the browser/device used. Uploaded images are only stored on ImageShare servers until the upload to the third-party service is complete, then the copy on ImageShare is deleted. The QR code is generated using the goQR.me API, which requires sending the URL to goQR.me after upload.

Imgur uploads are subject to Imgur's Terms of Service and Privacy Policy. ImgBB uploads are subject to ImgBB's Terms of Service and Privacy Policy.

Credits

Game title detection for Nintendo 3DS images uses a database published by 3dsdb.com. The ImageShare icon and logo is based on Cloud arrow up fill from Boostrap Icons.

imageshare's People

Contributors

corbindavenport avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

imageshare's Issues

Improve larger image file support

ImageShare doesn't have a defined upload size limit, and silently fails with some larger files. The error handling needs to be improved and there should be a clearly-stated maximum upload size (either one that fits both upload API options or a per-option size).

Converting images

I was using ImageShare with an older Mac, where screenshots and other images were stored as .PICT files, so ImageShare/Imgur didn't recognize them. Maybe there can be some server-side file conversion.

Video support

The Imgur API supports video uploads, so ImageShare could theoretically support them too.

Update app UI

There should be a note somewhere that you can bookmark the page for easy access. Maybe turn the text information into a JavaScript alert so it can be scrolled through easily on small screens.

Doesn't work on 3DS anymore?

As the title says. I tried to use ImageShare on a 3DS, but i was greeted with error code 032-1035 for some reason.
photo_2022-10-26_11-47-26

Analytics reporting is broken on 3DS

The script for Plausible Analytics doesn't seem to work on the New 3DS Browser, even using the compat script intended for Internet Explorer, and Plausible doesn't have a tracking pixel option like Google Analytics did.

There are a few options for fixing:

  1. Creating custom lightweight JavaScript code that reports data with the events API.
  2. Reporting analytics data server-side with PHP.

Bug when uploading iPhone photo

[image-share] [2022-09-02 19:26:01] [02-Sep-2022 19:26:00 UTC] PHP Fatal error:  Uncaught ValueError: Path cannot be empty in /workspace/web/index.php:72

Design improvements

The uploader should display two QR codes (one for the Imgur link, one for the direct image), with tabs or some other method to switch between them. Also, direct links to both that open in a new browser window/tab.

Ideally, everything should be visible on the lower screen only on the 3DS, which would also be a good test platform for other devices with small screens.

Update Plausible code

The active domain for Plausible should be moved to an environment variable, and leaving the variable blank/not setting the variable should turn off the analytics code. This would prevent custom installs of ImageShare from reporting analytics to the main Plausible dashboard, but leave it as an option for anyone who wants to set that up. The dev documentation can also be updated to explain how to do that.

Replace QR Code API

To reduce issues relating to user privacy, it would be ideal to add support or implement the use of a self-hosted/local piece of code, to generate QR codes of image URLs.

PHPQRCode seems to be a viable PHP based project for this kind of work, however I imagine it stores the image locally. I guess a solution to that would be exporting the generated image as a set of base64 text the browser would present? Can the 3DS Browser even accept that kind of data?

There are some other QR generating alternatives, but I haven't found one (in a quick search) that doesn't require payment or an account on someone's end.

Thank you for the code and service!

Can't connect with incorrect date and time

At least one original Nintendo 3DS user has reported issues connecting to ImageShare, which are resolved when fixing the device's date and time. A reminder about the issue has been added to the README, but there might be a server-side fix.

Add support for old 3DS

Report from old 3DS: "QR was on the top screen, but the upload page is like 25% on top 75% on bottom"

ImageShare is unable to upload to Imgur API

The production version of ImageShare is currently unable to upload images to Imgur, because the API returns this error:

string(109) "{"data":{"error":"Imgur is temporarily over capacity. Please try again later."},"success":false,"status":403}"

My local setup with the same Docker container and same API key still works, so I assume this is a (hopefully unintentional) IP block. I've updated the upload code to use binary files instead of base64-encoded images, and tried moving the server to a different DigitalOcean region, but nothing changed there. I also rolled out basic error handling, so ImageShare won't silently fail when an upload fails (which was generating a QR code that linked to the Imgur home page).

This shouldn't be related to Imgur's terms of service change:

There are no planned upcoming changes to Imgur’s API offerings. With this update, we are focused on the content that is uploaded to Imgur, not how the content is uploaded to Imgur

I'll update this thread as I investigate other solutions.

Heroku migration

Heroku is shutting down free dynos starting November 28, 2022, which is what ImageShare runs on: https://help.heroku.com/RSBRUH58/removal-of-heroku-free-product-plans-faq

I can't really justify $7/mo for ImageShare by itself, given I only use it infrequently myself and there aren't any donations coming in. It either needs to move to another host, or be rewritten as client-side JavaScript. I also can't redirect the current URL once I switch hosts after Nov 28, which is a problem. Vercel may be an alternative.

I'll post any updates on the situation here, and on the Discord server.

Rendering issues on Safari 2.0

The QR code is stretched out on Safari 2.0 on Mac OS X 10.4, and it's also not using the desktop view with two columns. This might require using hardcoded pixel width values as the base CSS, with overrides in the media queries.

B51CD526-33B6-41EC-BB15-95F5269228DD

[Suggestion] Replacing imgur with another Imagehost

Imgur recently announced their plans to delete "old, unused, and inactive content". In this case, uploading images using Imageshare to Imgur longer term may not be a good idea, as that content could in theory be lost later on down.

It seems the code is simple enough to switch to another API, but I don't want to recommend any specific one; this is more of a notice than an actual "issue", especially if users consider the images sent to imageshare as ephemeral.

Thank you for this service and code!

Create website

This should be hosted on the web branch. It might be best to use Bootstrap for the UI.

Home page:

  • Basic explainer
  • SEO to the max
  • Install instructions for various consoles (maybe tabs/accordions if Bootstrap is used?)
  • Donate links

Image viewer page

  • QR codes will load this page with the image as a parameter (e.g. view.html?url=img.jpg) instead of the image itself
  • Two primary buttons, download (which forces download) and share (uses Web Share API if supported)
  • Additional buttons for uploading to cloud services from the URL (Dropbox and Google Drive have buttons that accept URL as input, probably others too)
  • Explains that links expire after five minutes
  • Search engine no-follow
  • Donate links

Email send support

Not sure how easy this would be to set up, but it would be neat to have a text field for entering an email address, which the image would be sent to when the upload is complete. QR should remain the default setting.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.