Web: Bilder automatisch beim Hochladen verkleinern? z.B. per MBS möglich?

Ich habe eine interne WebApp mit der man u.a. auch Bilder hochladen kann. Die Bilder sollen als 1000x1000 hochgeladen werden. Den Benutzern ist es aber zu umstndlich vorher mit einem Malprogramm Bilder auf 1000x1000 zurechtzuschneiden. Wenn es kleiner als 1000x1000 ist, verweigere ich den Upload.

Ich wrde aber gerne, wenn Bilder grsser als 1000x1000 sind, diese vor dem Upload noch auf 1000x1000 verkleinern.

Mit Xojo Hausmitteln sehe ich da keine Chance. [Ich kann es zwar verkleinert darstellen, mchte aber keine 14 Megabyte auf dem Server speichern, wenn 1000x1000 viel kleiner wre.]

Ich denke aber, dass man es mit einem MBS Plugin das hinbekommen knnte?

Ich glaube ich kann es mir selbst beantworten:
Es ist nicht möglich, da man in den Prozess des Web FileUploaders von Xojo nicht eingreifen kann.

Was hilft könnten kleine Helper Apps links und rechts von Deiner WebApp sein. Konsolen-Apps, die entweder einen Hotfolder periodisch prüfen oder die von Deiner WebApp bei Bedarf aufgerufen werden. Skaliert besser als wenn Du alles in eine dicke WebApp packst.

Genauso hab ich es tatschlich umgesetzt:
Hab mir dem Automator ein kleines Script zusammen geklickt, dass die Verkleinerung vornimmt. Und zuvor lasse ich eine Suche laufen, welche Bilder noch zu gross sind. Das Script luft einmal nachts - und fertig.

Moin!

Ich verstehe jetzt das eigentlich Problem nicht ganz. Mal so auf die schnelle sollte das hier im uploadComplete Event ziemlich genau das tun…

	[code]dim p1 as Picture = picture.Open(Files(0).File)
	dim p2 as new Picture(1000, 1000)
	p2.Graphics.DrawPicture(p1,0,0,p2.Width, p2.Height, 0, 0, p1.Width, p1.Height)
	p2.Save(GetFolderItem("test.jpg"), picture.SaveAsJPEG)[/code]

Du müsstest halt noch die Überprüfung und eine Schleife einbauen, aber das finde ich nun deutlich sinnvoller, als da mit helper-Tools rum zu wirbeln…

Gruss

Marius

Ohne jetzt Deinen Code überprüft oder in der letzten Zeit mit dem XOJO Uploader gearbeitet zu haben fallen mir zwei mögliche Showstopper zu der Lösung ein:

  1. Eine Datei muss erst am Server als Datei gespeichert sein, bevor sie dann in einer kleineren Datei umgewandelt werden kann. Zumindest hatte ich das so in Erinnerung.

  2. Wenn das alles nun durch die WebApp selbst erledigt wird, so nimmt das Hin und Her und der Runterrechnerei einen ziemlichen Overhead an. Bei kleinen Webs alles kein Thema, sobald aber massiv viele von einer WebApp bedient werden kommst Du schnell in ein Bottleneck. Da ist die Variante mit einem Helper Dienst deutlich skalierbarer und ressourcenschonender.

Hallo Tomas,

bisher erfordern alle hier aufgeführten Lösungen ein vorheriges hochladen auf den Server. Damit sehe ich nicht, wo hier ein Showstopper sein sollte.

Es ist natürlich auch auf dem Client umsetzbar, dann in Javascript. Das liesse sich auch in Kombination mit Xojo umsetzen, führt aber hier zu weit. Dann wird es auf jeden Fall auch etwas komplexer.

Alle anderen Art und Weisen, dies vor dem Upload in Xojo zu handeln führen letztlich nur dazu, das es zwischen dem Client und dem Server per Websocket hin- und hergeworfen wird. Das ist also deutlich mehr Overload und keineswegs rein Clientbasiert.

Die “WebApp selber” ist das Binary auf dem Server. Da gibt es kein hin- und her mehr. Das ding wird hochgeladen, resized und gespeichert. Ich habe einige WebApps, die schon ziemlich böse Traffic machen auf entsprechenden Maschinen, ich schätze mal “normale Handy-Bilder” auf 1000px resizen würden diese Server / Apps mit Interface ausliefern und uploadgedönse noch easy 50.000 / Stunde handeln.
Davon abgesehen, der initiale Post sprach von “interner App” nicht von Hochleistungs-System. Wenn hier also nicht grad ein Großkonzern mit einer Coreanwendung im Rennen ist, sehe ich da überhaupt kein Problem…

Marius