Ich würde wahrscheinlich pressly/chi bevorzugen, aber ich denke, es macht keinen Unterschied. I imagine einen Eingang URL wie diese example.com/Jd8saD.jpg?resize=420x320&fit=crop&rotate=90
gegeben, dann wäre es wegen r.Get("/:image", ImageGET)
auf die folgende GET-Funktion gehen:Prozessbild bei mehreren URL-Parametern in Go
function ImageGET(w http.ResponseWriter, r *http.Request) {
if r.URL.Query().Get("resize") != "" {
// do something
}
if r.URL.Query().Get("crop") != "" {
// do something
}
if r.URL.Query().Get("watermark") != "" {
// do something
}
etc
}
Nun, meine Frage ist, wie soll ich entwerfen, was Funktion, um die Bildverarbeitung funktioniert, so dass es alles richtig und effizient verarbeiten? Ich erwarte nicht, dass Sie Code schreiben, der die Größenänderung übernimmt, aber wie würden diese Funktionen aussehen? Vielleicht:
function Resize(size string) (imgfile?, error) {
// the resize stuff
}
Was wäre das imgfile
zurückgegeben werden? Eine Struktur mit einigen relevanten IMG-Informationen?
Das ist wirklich großartig, ich wundere mich .. mit diesem Ansatz werde ich wahrscheinlich am Ende die Bildbearbeitung Bibliothek (z. B. libvips) immer und immer wieder mit jedem Parameter aufrufen. Würdest du es auch so machen, oder wäre es vielleicht schlauer, die Parameter zu speichern und dann die Bildbearbeitung in einer Process-Funktion vorzunehmen, oder vielleicht noch etwas anderes? – fisker
Mmh, ich bin mir nicht sicher, wie libvips funktioniert, aber ich wette, es wäre viel einfacher, eine Prozessfunktion zu haben, in der die Abfragen übergeben werden könnten – Nevermore
Sie können libvips in beide Richtungen verwenden. Sie können die Grundfunktionen einzeln aufrufen, oder Sie können eine einzelne High-Level-Thumbnail-Funktion mit einer Reihe von Parametern aufrufen. Wenn Sie Ihre Parameter zusammentragen und vips_thumbnail() am Ende aufrufen, können Sie sicher sein, dass die grundlegenden Funktionen für Sie in der besten Reihenfolge aufgerufen werden. API hier: http://jcupitt.github.io/libvips/API/current/libvips-resample.html#vips-thumbnail Intro zur Größenanpassung hier: https://github.com/jcupitt/libvips/wiki/HOWTO-- --Image-Schrumpf Intro zu viphumbnail hier: http://jcupitt.github.io/libvips/API/current/Using-vipsthumbnail.md.html – user894763