Am schnellsten anpassen der Bildgröße in .NET
Brauche ich die schnellsten Bibliothek, um die Größe Bilder in voller Größe, einige bis zu 9MB groß) mehrere Größen.
Hier ist die scenerio:
- User-uploads ein Foto
- ein FileSystemWatcher läuft in einem service-beobachten Sie die drop-Lage (auf einem SAN)
- Wenn ein neues Foto angezeigt wird, der service wird 4 Versionen von den Bildern in voller JPEG-Qualität:
- 100px breit
- 320px Breite
- 640px Breite
- 1280 Breite
Ich bin nicht viel Aufhebens, wenn die Bibliothek ist in C/C++ oder irgendetwas anderes für diese Angelegenheit, so lange wie ich kann auf ihn über .NET, es ist cool.
Auch diese müssen in Maßstab, um möglicherweise 1,000 aktiv Benutzer.
Lassen Sie mich Ihre Meinung wissen 🙂
- Ich würde Sie nur FileSystemWatcher in sehr schlechten Umständen. Wenn Sie das hochladen oder kopieren Sie die Datei, schreiben auf einer message-queue Aufruf einer service-Methode, die etwas anderes als darauf zu warten, für den FSW, um ihn abzuholen.
- Haben Sie etwas gefunden, schneller als die Grafik ? Ich bin mit dem gleichen problem hier. stackoverflow.com/questions/16988078/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine Menge von Artikeln gibt, zeigt die Grundlagen dieser. Ich habe die Komponenten aus Atalasoft und festgestellt, dass Sie von ziemlich guter Qualität. Gibt es Nuancen zu ändern und die Arbeit mit JPEG-Bildern.
Du scheinst wirklich mit Leistung betrifft, aber Sie nicht wirklich genug Informationen geben, um uns zu helfen, empfehlen gute Optimierungen für Sie. Was auch immer Sie tun, Sie müssen tun, eine vollständige performance-Analyse und-verstehen, was langsam läuft. In einigen Fällen slowish, aber wartbar image processing-code kann OK sein, wenn andere Dinge optimiert sind.
Einer Lösung für eine gute performance ist die queue für eingehende Dateien, die konvertiert werden müssen. Hinzufügen mehr Maschinen, mehr Nachrichten in der Warteschlange oder die Optimierung der service-code ein, um einen besseren Durchsatz. Es ist wirklich nicht so schwer zu handhaben, eine große Anzahl von Nutzern, wenn Sie sich das design Recht.
Hier ist winforms Weg
und hier ist WPF Weise TransformedBitmap Klasse
Empfehle ich ImageResizer:
Key features sind:
Für die Installation mit Nuget:
Weitere Informationen, überprüfen Sie bitte:
http://imageresizing.net/docs/install/nuget
Wenn das Geld ist kein Objekt, LeadTools ist die traditionelle "gehe zu" - Bibliothek für die Bildverarbeitung. That being said, meine erste Neigung wäre es code mit stock .NET GDI+ - Aufrufe und dann ein paar Tests durchführen. Es ist wahrscheinlich, dass diese Lösung wäre performant genug, aber wenn nicht, müssen Sie eine Basislinie aus, die Sie vergleichen können, andere Bibliotheken und Lösungen. Alles was mit dem laichen ein Kommandozeilen-tool wird verbunden sein mit der Schaffung einer separaten Prozess für jedes Bild, welches verneinen könnte der Vorteil des Gehens zu nicht verwaltetem code.
Ich bin mir nicht sicher über die Leistung, aber die open-source-OpenCV ist eine option.
void cvResize( const CvArr* ich, CvArr* J, int interpolation=CV_INTER_LINEAR );
Die Funktion cvResize ändert die Größe des Bild habe ich so, dass es passt genau auf J. Wenn ROI gesetzt ist, wird die Funktion consideres der ROI als unterstützt, wie üblich. das Quell-Bild mit den angegebenen strukturierende element B, bestimmt die Form der ein-pixel-Nachbarschaft, über die das minimale genommen wird: