Ich portiere eine alte E-Commerce-Site auf MVC 3 und möchte Designverbesserungen nutzen. Auf der Website sind derzeit Produktbilder in drei Größen gespeichert: Miniaturansicht, Mittel (zur Anzeige in einer Liste) und erweitert für einen vergrößerten Look. Im Moment müssen wir 3 separate Bilder hochladen, die genau die richtige Größe haben, 3 verschiedene Namen angeben, die den Erwartungen der Website entsprechen usw. Es ist ein Schmerz.
Ich möchte nur eine Datei hochladen, die große, und dann die Site auf die erforderlichen Größen reduzieren lassen. Ich möchte die Flexibilität, die Größe von Miniaturansichten und Listen abhängig von den Benutzereinstellungen und dem Formfaktor (z. B. Mobil, iPad) zu ändern , Desktop) usw. benötigen daher möglicherweise viele Kopien desselben Bildes. Meine Frage ist, ob das Bild beim Hochladen reduziert und dann mehrmals gespeichert werden soll. Wenn ja, was ist eine gute Speicher- / Namenskonvention?
Die andere Idee besteht darin, nur das einzelne Bild zu speichern, aber die Größe programmgesteuert zu ändern, bevor es dem Client bereitgestellt wird. Hat jemand dies getan und was sind die Kompromisse außer ein paar weiteren Maschinenzyklen? Wie übergeben Sie ein temporäres Bild im Speicher an den Client (es gibt keine URL)?
quelle
ImageProcessor
Imageprocessor ist eine leichte, erweiterbare Bibliothek, die in C # geschrieben ist und es Ihnen ermöglicht, Bilder mit .NET im laufenden Betrieb zu bearbeiten
Schnelle Größenänderung:
ImageProcessor.Web wird standardmäßig mit Caching geliefert . Jedes verarbeitete Bild wird sowohl im Browser als auch auf dem Server für eine Länge Ihrer Wahl asynchron zwischengespeichert. Der Server-Cache speichert intelligent Millionen von Bildern und aktualisiert sich automatisch, falls sich das ursprüngliche Bild ändert oder der Cache abläuft.
quelle
Angenommen, das Miniaturbild ist einfach eine verkleinerte Version des Hauptbilds, dann sollte es meiner Meinung nach zum Zeitpunkt des Uploads erfolgen, aber möglicherweise als Hintergrundjob geplant werden, um andere Prozesse nicht zu beeinträchtigen. Wenn Sie die Größe im laufenden Betrieb ändern, stellen Sie sicher, dass Sie das Bild zwischenspeichern.
Der Haken dabei ist, dass das beste Miniaturbild für einige Bilder keine einfache Größenänderung des Masters ist. Möglicherweise müssen Sie auf eine vom Menschen gesteuerte Weise zoomen und zuschneiden. Möglicherweise möchten Sie die automatische Größenänderung vornehmen, verfügen jedoch über einen Mechanismus, der in diesen speziellen Fällen eine Überschreibung ermöglicht.
quelle
Eine kleine Variation dessen, was Adam erwähnt hat:
(1) Erstellen Sie eine benutzerdefinierte Fehlerseite (Regel für Bilder)
(2) Die Struktur der Bilddateinamen sollte sein:
Die einzige Ausnahme ist das Originalbild und sollte benannt werden:
(3) Beim Hochladen von Dateien, z. B.: 1245_Original -> Alle Dateien mit 1245_ * sollten gelöscht werden
(4) Die benutzerdefinierte Fehlerseite (unter der Annahme, dass 1245_Original vorhanden ist) sollte die angeforderte Bilddatei dynamisch erstellen, z.
und auch beim ersten Mal servieren.
Beim Hochladen eines neuen Bildes wird der Cache gelöscht.
quelle