J'ai une image et je veux recadrer la partie supérieure de l'image et enregistrer l'image en C#. Comment puis-je y aller?C# rogner une image à la petite partie supérieure
Répondre
Vous pouvez créer une nouvelle image bitmap de la taille souhaitée et dessiner une partie de l'ancienne image sur la nouvelle à l'aide de Graphics.FromImage pour créer un objet Graphics qui dessine dans la nouvelle image. Assurez-vous de disposer de l'objet Graphics lorsque vous avez terminé, puis vous pouvez enregistrer l'image nouvellement créée.
Voici quelques cropping code bien documenté:
try
{
//create the destination (cropped) bitmap
Bitmap bmpCropped = new Bitmap(100, 100);
//create the graphics object to draw with
Graphics g = Graphics.FromImage(bmpCropped);
Rectangle rectDestination = new Rectangle(0, 0, bmpCropped.Width, bmpCropped.Height);
Rectangle rectCropArea = new Rectangle(myX, myY, myCropWidth, myCropHeight);
//draw the rectCropArea of the original image to the rectDestination of bmpCropped
g.DrawImage(myOriginalImage, rectDestination, rectCropArea,GraphicsUnit.Pixel);
//release system resources
}
finally
{
g.Dispose();
}
public static Bitmap Crop(Bitmap bitmap, Rectangle rect)
{
// create new bitmap with desired size and same pixel format
Bitmap croppedBitmap = new Bitmap(rect.Width, rect.Height, bitmap.PixelFormat);
// create Graphics "wrapper" to draw into our new bitmap
// "using" guarantees a call to gfx.Dispose()
using (Graphics gfx = Graphics.FromImage(croppedBitmap))
{
// draw the wanted part of the original bitmap into the new bitmap
gfx.DrawImage(bitmap, 0, 0, rect, GraphicsUnit.Pixel);
}
return croppedBitmap;
}
Autres réponses travail, voici comment le faire en créant un extension method pour Image
s:
class TestProgram
{
static void Main()
{
using (Image testImage = Image.FromFile(@"c:\file.bmp"))
using (Image cropped =
testImage.Crop(new Rectangle(10, 10, 100, 100)))
{
cropped.Save(@"c:\cropped.bmp");
}
}
}
static public class ImageExtensions
{
static public Bitmap Crop(this Image originalImage, Rectangle cropBounds)
{
Bitmap croppedImage =
new Bitmap(cropBounds.Width, cropBounds.Height);
using (Graphics g = Graphics.FromImage(croppedImage))
{
g.DrawImage(originalImage,
0, 0,
cropBounds,
GraphicsUnit.Pixel);
}
return croppedImage;
}
}
donc tout ce que vous deviez faire était d'ajouter "ceci" à mon exemple: P – Lucas
@Lucas: Exactement! En fait, il prend également une image au lieu d'être limité à un bitmap. (Sérieusement, quand la question a été soulevée, et avant que vous ayez posté, j'ai passé 5 minutes à écrire du code qui s'est avéré être presque identique au vôtre, donc j'ai fait une méthode d'extension pour ne pas avoir à le jeter Devinez d'où vient votre (actuellement) un upvote;]) –
- 1. C#: GDI + Rogner
- 2. Code d'affichage de la plus petite puissance 2 supérieure ou égale à l'entier
- 3. Accès à la mémoire supérieure à UINT_MAX * 4 en C?
- 4. Petite animation iPhone: séquence vidéo ou image?
- 5. C# ajouter une couche à une image
- 6. Trouver une image dans une image C#
- 7. Je veux un algorithme pour rogner une image, par où commencer
- 8. Je veux rogner une image, dessiner une image de plus petite taille sans mettre en cache les images .... Quelle est la meilleure façon ou le bon code pour obtenir ce fait dans l'iPhone?
- 9. Dans GWT, comment cliquez et faites glisser une grande image pour modifier la partie à visualiser?
- 10. créer UIImageView avec une partie du fichier image
- 11. Comment extraire une partie de cette image en Java?
- 12. Comment afficher une partie d'une image en utilisant jquery?
- 13. Comment recadrer une partie de l'image gif?
- 14. Comment faire pour supprimer une petite partie de la chaîne dans la grande chaîne en utilisant RegExp
- 15. Accéder à une image dans une image
- 16. MySql requête, sélectionnez supérieure à
- 17. changer une partie d'un fichier dans C++
- 18. ASP.NET C#: Recadrer une image
- 19. Quelle est la plus petite empreinte dans C#
- 20. Définition de Substr à une longueur supérieure à la longueur de la chaîne
- 21. C# DataGridView - Image transparente
- 22. Comment puis-je mettre une petite image dans le coin inférieur gauche d'une image plus grande en CSS?
- 23. Trouver une Image dans une Image
- 24. Vues CouchDB: created_at supérieure à une valeur passée
- 25. Manipuler une variable VARCHAR supérieure à 8000 caractères
- 26. Petite bibliothèque Unicode open source pour C/C++
- 27. C# fils et propriétés deuxième partie
- 28. Obtenir une image à partir de l'URL Objectif C
- 29. LINQ to XML pour une petite application peut-elle remplacer une petite base de données?
- 30. Placer une petite flèche sur une lettre avec css
+1, mais vous devrait utiliser "using" (ou try/finally) pour s'assurer que g.Dispose() est appelé – Lucas
Essayé votre code cela ne fonctionne pas. Je recadre un fichier ** bmp ** Je reçois une nouvelle image recadrée ** mais ** tout est blanc, il semble que le contenu de l'image elle-même n'est pas pris en compte, je continue à obtenir des choses vides. Toute proposition? – CoolStraw
qui fonctionne parfaitement :) –