Comment puis-je redimensionner une image sans affecter la qualité de l'image?
c#
image
image-scaling
public statique
la source
la source
Réponses:
Comme le dit rcar , vous ne pouvez pas sans perdre de la qualité, le mieux que vous puissiez faire en c # est:
la source
Sauf si vous faites des graphiques vectoriels, il n'y a aucun moyen de redimensionner une image sans potentiellement perdre une certaine qualité d'image.
la source
d' ici
la source
Je pense que ce que vous cherchez à faire est de "redimensionner / rééchantillonner" vos images. Voici un bon site qui donne des instructions et fournit une classe d'utilité (que j'utilise aussi):
http://www.codeproject.com/KB/GDI-plus/imgresizoutperfgdiplus.aspx
la source
Sauf si vous redimensionnez, vous ne pouvez pas le faire avec des graphiques raster.
Ce que vous pouvez faire avec un bon filtrage et un bon lissage est de redimensionner sans perdre aucune qualité notable .
Vous pouvez également modifier les métadonnées DPI de l'image (en supposant qu'elle en possède) qui conserveront exactement le même nombre de pixels, mais modifieront la façon dont les éditeurs d'images la perçoivent dans des mesures «réelles».
Et juste pour couvrir toutes les bases, si vous ne parliez vraiment que de la taille de fichier de l'image et non des dimensions réelles de l'image, je vous suggère de regarder un encodage sans perte des données d'image. Ma suggestion pour cela serait de réenregistrer l'image sous forme de fichier .png (j'ai tendance à utiliser Paint comme transcodeur gratuit pour les images dans Windows. Charger l'image dans Paint, enregistrer sous le nouveau format)
la source
Vous ne pouvez pas redimensionner une image sans perdre de la qualité, simplement parce que vous réduisez le nombre de pixels.
Ne réduisez pas la taille côté client, car les navigateurs ne font pas un bon travail de redimensionnement des images.
Ce que vous pouvez faire est de modifier la taille par programme avant de le rendre ou au fur et à mesure qu'un utilisateur la télécharge.
Voici un article qui explique une façon de faire cela en c #: http://www.codeproject.com/KB/GDI-plus/imageresize.aspx
la source
Voyez si vous aimez la qualité de redimensionnement d'image de ce module ASP.NET open source. Il y a une démo en direct, vous pouvez donc jouer avec vous-même. Cela donne des résultats qui sont (pour moi) impossibles à distinguer de la sortie Photoshop. Il a également des tailles de fichier similaires - MS a fait du bon travail sur son encodeur JPEG.
la source
Il y a quelque chose là-bas, le redimensionnement sensible au contexte, je ne sais pas si vous pourrez l'utiliser, mais cela vaut la peine d'être examiné, c'est sûr
Une belle démo vidéo (l'agrandissement apparaît vers le milieu) http://www.youtube.com/watch?v=vIFCV2spKtg
Ici, il pourrait y avoir du code. http://www.semanticmetadata.net/2007/08/30/content-aware-image-resizing-gpl-implementation/
Était-ce exagéré? Peut-être qu'il existe des filtres simples que vous pouvez appliquer à une image agrandie pour brouiller un peu les pixels, vous pouvez vous pencher là-dessus.
la source
Redimensionnez-vous plus ou moins? Par un petit% ou par un facteur plus grand comme 2x, 3x? Qu'entendez-vous par qualité pour votre application? Et quel type d'images - des photographies, des dessins au trait dur ou quoi? Écrire votre propre code de broyage de pixels de bas niveau ou essayer de le faire autant que possible avec des bibliothèques existantes (.net ou autre)?
Il existe un vaste corpus de connaissances sur ce sujet. Le concept clé est l'interpolation.
Recommandations de navigation:
* http://www.all-in-one.ee/~dersch/interpolator/interpolator.html
* http://www.cambridgeincolour.com/tutorials/image-interpolation.htm
* pour C #: https: //secure.codeproject.com/KB/GDI-plus/imageprocessing4.aspx?display=PrintAll&fid=3657&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=26&select=629945 * ceci est spécifique à Java mais peut être éducatif - http: //today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html
la source
Ici vous pouvez trouver également ajouter des codes de filigrane dans cette classe:
la source
Voici un fil de discussion du forum qui fournit un exemple de code de redimensionnement d'image C #. Vous pouvez utiliser l'un des classeurs de bibliothèque GD pour effectuer un rééchantillonnage en C #.
la source