J'ai besoin de la bibliothèque Voici le scénario: p>
Je ne suis pas préparé si la bibliothèque est C / C ++ ou autre chose d'autre, tant que je peux appuyer sur elle via .net c'est cool. P>
De plus, cela devra mettre à l'échelle pour éventuellement 1 000 laissez-moi savoir vos pensées :) p>
5 Réponses :
Voici WinForms Way
public Image ResizeImage( Image img, int width, int height ) { Bitmap b = new Bitmap( width, height ) ; using(Graphics g = Graphics.FromImage( (Image ) b )) { g.DrawImage( img, 0, 0, width, height ) ; } return (Image ) b ; }
L'objet graphique devrait probablement être enveloppé d'utiliser au lieu d'appeler explicitement disposer.
Vous avez raison, j'ai édité le post
Non, c'est juste aussi lent que Picturebox Zoom Sizemode. Je cherche un moyen plus rapide; Mon application de test: Stackoverflow.com/questions/16988078/...
@Turnor pourquoi? En raison de l'effet papillon, ou parce que vous le dites?
@Kennethk. Parce que cela appellera épargner même si une exception est lancée.
Si l'argent n'est pas un objet, leadTools est la bibliothèque traditionnelle "Aller à" pour le traitement de l'image. Cela étant dit, ma première inclination serait de le coder en utilisant des appels de stock .NET GDI + puis de tester. Il est probable que cette solution serait suffisamment performante, mais sinon, vous aurez une base de référence à partir de laquelle vous pouvez comparer d'autres bibliothèques et solutions. Tout ce qui implique le frai d'un outil de ligne de commande entraînera la création d'un processus distinct pour chaque image, ce qui pourrait annuler l'avantage d'aller au code non géré. P>
Il y a beaucoup d'articles là-bas montrant le Principes de base de cette a >. J'ai utilisé les composants de Atalasoft et les a trouvées de bonne qualité. Il existe des nuances de redimensionner et de travailler avec des images JPEG. P>
Vous semblez être vraiment préoccupé par la performance, mais vous ne donnez pas vraiment assez d'informations pour nous aider à suggérer de bonnes optimisations pour vous. Quoi que vous fassiez, vous devez faire une analyse complète de la performance et comprendre ce qui fonctionne lentement. Dans certains cas, un code de traitement d'images de maintenance peut être correct si d'autres choses sont optimisées. P>
Une solution pour de bonnes performances est de faire la queue de fichiers entrants à convertir. Ajoutez plus de machines pour gérer plus de messages dans la file d'attente ou optimiser le code de service pour obtenir un meilleur débit. Il n'est vraiment pas si difficile de gérer un grand nombre d'utilisateurs si vous obtenez le droit de conception. P>
Je ne suis pas sûr de la performance, mais du Open Source OpenCV est une option. < / p>
void cvResize (const cvarr * i, cvarr * j, int Interpolation = cv_inter_linear); p>
La fonction CVResize redimensionne l'image I afin qu'elle correspond exactement à J. Si ROI est défini, la fonction considère le retour sur investissement aussi pris en charge que d'habitude. L'image source utilisant l'élément structurant spécifié B qui détermine la forme d'un quartier de pixels sur lequel le minimum est pris: p>
Je recommande Les caractéristiques de clé sont les suivantes: p> < ul>
pour l'installation avec Nuget: P> Pour plus d'informations s'il vous plaît vérifier:
http://imageresizing.net/docs/install/nuget p> p>
Une note avec cela ayant utilisé imageesizer.net beaucoup. Le plug-in diskCache que vous avez énumérés ici fait partie du package Performance, si vous l'installez, sans licence payée (ce qui est assez coûteux), il rendra un petit point dans le coin.
Je n'utiliserais que FichnesSystemwatcher dans des circonstances extrêmement mauvaises. Si vous téléchargez ou copiez le fichier, écrivez dans une file d'attente de message, appelez une méthode de service, quelque chose i> autre que d'attendre que le FSW le ramasse.
Avez-vous trouvé quelque chose plus rapide que les graphiques? Je suis avec le même problème ici. Stackoverflow.com/Questtions/16988078/...