0

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,

Antwort

-2

ImageResizer bietet einen zoom Parameter, der die Mathematik für Sie tut, im Wesentlichen die Breite und Höhe paramters multipliziert wird.

ev.QueryString["zoom"] = 2; // 3, etc, 
+1

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. –

+0

Danke für die Anleitung, das macht genau das, was wir zu erreichen versuchen. –

Verwandte Themen