Thumbnails auf dem Client generieren

8

Mein Team und ich erstellen eine iOS-Anwendung. Wir ermöglichen es Technikern vor Ort, Bilder für bestimmte Probleme hochzuladen, die sie an technischen Geräten lösen. Es wird wichtig sein, zu vergrößern (also die Qualität relativ hoch zu halten), wenn diese Bilder auf S3 hochgeladen werden.

Vor kurzem haben wir uns dazu entschlossen, Thumbnails hinzuzufügen, weil es viel schneller ist, wenn andere die iOS-App durchsuchen, anstatt ein 1.5-2.5 MB-Bild herunterzuladen.

Mein Kollege entschied, dass der beste Weg, dies zu handhaben, darin besteht, ein Vorschaubild von 200-500kb in iOS zu generieren und dann das Bild und das Vorschaubild auf s3 hochzuladen.

Ich habe meine Bedenken geäußert, dass sich einige unserer Techniker in einigen Teilen der Welt befinden, wo das Internet langsam ist und die Datennutzung begrenzt ist. All diese zusätzlichen Arbeiten am Gerät und das Hochladen machen mir keinen Sinn. Das Team hält dies jedoch für eine gute Lösung und wird sich weiterentwickeln. Ich habe ihnen einfache Beispiele gezeigt, wie Thumbnails von S3 und Lambda automatisch auf dem Server erzeugt werden können. So können wir entweder Bilder mit höherer Wiedergabetreue mit der zusätzlichen Bandbreite hochladen oder einfach die Geschwindigkeit der App erhöhen, indem wir viel weniger hochladen. Manchmal kann ein Benutzer bis zu 100 Bilder hochladen ... was zusätzliche 20-50 MB bedeutet ...

Wie auch immer, ich wollte einige Antworten darüber hören, wie ihr denkt, dass der beste Weg, um damit fertig zu werden, hauptsächlich für meinen eigenen Plausibilitätscheck ist.

    
agrublev 29.09.2016, 00:07
quelle

2 Antworten

2

Ich verstehe die Feinheiten Ihres Projekts nicht vollständig, aber aus Erfahrung habe ich ein Wort für Sie - Cloudinary . Im Gegensatz zu S3, der Cloud-Storage-Lösung für allgemeine Zwecke, wird Cloudinary für die Handhabung von Images entwickelt.

Wir haben eine Online-Rubrikanwendung mit 200.000 Zugriffen pro Tag, die täglich zehntausende von Fotos verarbeitet. Und cloudinary bietet eine extrem gemeine Lösung für all unsere Bedürfnisse. Wir laden die Nutzer von ihren mobilen und Desktop-Geräten hoch, bookmarken diese Bilder, nutzen CDN-basiert und erzeugen Thumbnails.

Habe ich erwähnt, dass sie Thumbnail-Generierung eingebaut haben? Sie haben viele andere Funktionen, einschließlich

  • Größe ändern und zuschneiden
  • Optimiertes benutzerdefiniertes JPEG-Beschneiden
  • Gesichtsminiatur
  • Gedrehtes kreisförmiges Miniaturbild
  • Zoom-Effekte und Zoom-Bildüberlagerung
  • Wasserzeichenbild
  • Optimiertes WebP
  • Überlagerung, Umrandung, Schattenüberlagerung, Umrandung, Schatten usw.

Die Admin-Konsole ist auch ziemlich kickass, mit allen oben genannten Funktionen, die Sie über die Cloud konfigurieren können. Und es passt zu fast jeder Anwendung (wir verwenden es in unseren internen Ruby, Go, NodeJS-Diensten, unserer Web-Anwendung und unseren iOS- und Android-Apps). Ich werde nicht dafür bezahlt, Cloudinary an Sie zu verkaufen, aber ich kann dafür bürgen, dass ich für Cloudinary jeden Tag über S3 gehen würde, wenn es um bildbasierte Dienste geht, die ich brauche. Große Spieler wie EBay, TED usw. verwenden es für ihre Image-Anforderungen.

    
nikjohn 10.10.2016 17:22
quelle
-1
  

Vor kurzem haben wir uns entschieden, Thumbnails hinzuzufügen, weil es viel schneller geht   wenn andere die iOS-App durchsuchen, anstatt eine 1.5-2.5 MB herunterzuladen   Bild.

Ich hatte ein ähnliches Problem in einem anderen Paralleluniversum, wo die Netzwerklatenz ein Faktor war. Am Ende habe ich zwei Bilder vom Gerät, ein Thumbnail und das Originalbild eingereicht.

  1. Das Thumbnail wurde zusammen mit den Metadaten zuerst an den Server gesendet. Dadurch wurde die Nutzlast klein gehalten und der Benutzer der App konnte weiterhin Fotos machen und Anmerkungen machen.

  2. Das Originalbild wurde auch an den Server gesendet, aber in einer Hintergrundaufgabe. Das Originalbild auf dem Server war der Schlüssel zum Zoomen und anderen Operationen, die zu einem späteren Zeitpunkt benötigt werden.

Wie Sie sich vorstellen können, erzeugt dies ein paar nicht so " glückliche Wege ", da das Originalbild möglicherweise nicht verfügbar ist für andere Benutzer. Sie können jedoch mindestens eine Vorschau erhalten, bis das Originalbild vollständig übermittelt wurde.

  

Ist das eine gute Übung?

Ich kann nicht sagen, dass es so ist, aber es war sicherlich ein Kompromiss.

  

Ist es eine gute Idee?

Dies hängt von Ihren Anwendungsfällen ab. Ich musste fast unmittelbar vor dem Fortfahren Metadaten mit einem kleinen Thumbnail hochladen, aber ich musste auch das Original für zukünftige Verarbeitung auf dem Server behalten.

    
Alex Nolasco 10.10.2016 18:17
quelle