Theme, dass wir unsere Webstile erstellen verwendet Retina.Js auf dem Frontend, das automatisch @ 2x und @ 3x Bilder nach Benutzer-Gerät in der Weise zu laden versucht, dass;Automatisches Servieren @ 2x und @ 3x Bilder mit ImageResizer auf MVC
Wenn wir unsere Schieberegler für den Desktop mit Bildgrößenanpassung dienen wie folgt;
/Images/home/slides/slide-1.jpg?width=300
(wobei 1 die Dbid des Bildes)
Dieses Skript die folgenden Bilder automatisch anfordern, wenn der Besucher Verwenden eines mobilen Geräts mit hoher Auflösung;
/Images/home/slides/[email protected]?width=300
/Images/home/slides/[email protected]?width=300
Wir sind Verwenden von ImageResizer mit SqlReader und DiskCache Plugins, so dass die Bilder aus der Datenbank gelesen und auf der Festplatte zwischengespeichert werden.
Wenn das Skript @ 2x und @ 3x Namenskonventionen Bilder vom Server anfordert, gab ImageResizer natürlich Fehler für diese Bilder zurück, da es kein Bild mit der ID '1 @ 2x' in der db finden konnte, aber zum Glück konnten wir um dieses Hindernis zu überwinden, indem Sie Pipeline verwenden.Rewrite;
ImageResizer.Configuration.Config.Current.Pipeline.Rewrite += delegate (IHttpModule s, HttpContext context, ImageResizer.Configuration.IUrlEventArgs ev)
{
if (ev.VirtualPath.StartsWith(VirtualPathUtility.ToAbsolute("~/kitimages/"), StringComparison.OrdinalIgnoreCase))
{
if (ev.VirtualPath.Contains("@2x"))
{
ev.VirtualPath = ev.VirtualPath.Replace("@2x", string.Empty);
}
}
};
so jetzt, dass wir in der Lage, die Bilder dienen, die @ 2x (oder @ 3x in dieser Weise) auf der Desktop-Auflösung.
Aber was wir nicht erreichen konnten, ändern Auflösung der Wünsche @ 2x oder @ 3x Bild. Da wir image '? Width = 300' mit Querystring-Parameter aufrufen, dienen diese Bilder auch als Desktop-Auflösung.
Wir haben versucht,
ImageResizer.Configuration.Config.Current.Pipeline.ModifiedQueryString["width"]
auf neu berechneten Wert zu ändern, die keine Wirkung hatte.
Sets neuer Wert Breite unter
context.Items["resizer.modifiedQueryString"]
Eigenschaft, die keine Wirkung hatte.
Auch versucht, das folgende ohne Glück zu verwenden;
ImageResizer.Configuration.Config.Current.Pipeline.Modify(new ResizeSettings() { Width = 600 });
ImageResizer.Configuration.Config.Current.CurrentImageBuilder.SettingsModifier.Modify(new ResizeSettings() {Width = 600});
ImageResizer.Configuration.Config.Current.Pipeline.GetImageBuilder().SettingsModifier.Modify(new ResizeSettings() { Width = 600 });
Jetzt ist die Frage; Gibt es eine Möglichkeit, die Größenänderungseinstellungen während der Verwendung von SqlReader- und DiskCache-Plug-ins zu ändern und @ 2x- und @ 3x-Bilder mit den richtigen Auflösungen zu liefern?
Vielen Dank im Voraus,
Diese Antwort befindet sich jetzt in der VLQ-Warteschlange. Ich denke, es beantwortet die Frage, aber Sie möchten vielleicht eine kleine Erklärung hinzufügen. –
Danke für die Anleitung, das macht genau das, was wir zu erreichen versuchen. –