[C#.NET] Extraire une image d'une image en fonction d'un rectangle ?

Extraire une image d'une image en fonction d'un rectangle ? [C#.NET] - C#/.NET managed - Programmation

Marsh Posté le 27-09-2006 à 14:55:16    

Bonjour,
 
Comment puis-je, à partir d'un fichier image, creer une autre image à partir d'un rectangle de selection tracé sur la 1ere image et défini par des coordonnées ?
 
Autrement dit, jai une image sur laquelle je définis un rectangle de selection. Maintenant, je voudrais faire un screenshot de ce rectangle et le sauvegarder dans un fichier à part.  
 
Qqun a une piste ?
 
 :jap:


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
Reply

Marsh Posté le 27-09-2006 à 14:55:16   

Reply

Marsh Posté le 27-09-2006 à 15:09:35    

J'avais fait ça, il fut un temps :
 

Code :
  1. //Création de la nouvelle image (x et y représente les dimensions)
  2. Bitmap texture = new Bitmap(x, y);
  3. //Utilisation d'un objet Graphics ... donc de GDI+
  4. Graphics g = Graphics.FromImage(texture);
  5. //Dimension et positionnement de ton rectangle de sélection dans ton image Source  
  6. Rectangle srcRect = new Rectangle(0, 0, x, y);
  7. //Dimension et positionnement dans la nouvelle image
  8. Rectangle destRect = new Rectangle(0, 0, x, y);
  9. //Dessin de l'image avec les ... représentant l'image Bitmap source
  10. g.DrawImage(..., destRect, srcRect, GraphicsUnit.Pixel);


 
Tu remarqueras que j'ai mis des 0 pour les rectangles, tu pourras changer cela à ta guise
 
En espérant que cela puisse t'inspirer
 
++


Message édité par arnaudm57 le 27-09-2006 à 15:11:01
Reply

Marsh Posté le 27-09-2006 à 16:39:36    

Merci, je vais tenter :)


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
Reply

Marsh Posté le 02-10-2006 à 10:55:47    

Hm je n'y arrive pas :/
 
L'ennui, c'est que je veux extraire un rectangle d'un bitmap avec des coordonnées précises (en Cm, malheureusement !), et faire afficher cet extrait de facon agrandie dans un viewerPanel.
 
J'ai ceci pour le moment, ca marche, mais ca m'affiche l'image entiere (avec le bon ratio) dans le viewerPanel:
 

Code :
  1. private void GenerateThumbnail(string path, int selectedPage)
  2.         {
  3.             //int dpi = 72;
  4.             using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
  5.             {
  6.                 byte[] buffer = new byte[file.Length];
  7.                 file.Read(buffer, 0, buffer.Length);
  8.                 document = new Document(new BinaryReader(new MemoryStream(buffer)));
  9.             }
  10.             Page page = document.Pages[selectedPage];
  11.             bitmap = new Bitmap(
  12.                (int)(page.Width),
  13.                (int)(page.Height));
  14.             Graphics graphics = Graphics.FromImage(bitmap);
  15.             page.Draw(graphics);
  16.         }


 
Puis:
 

Code :
  1. private void viewerPanel_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
  2.         {
  3.             e.Graphics.Clear(Color.White);
  4.             if (null != bitmap)
  5.             {
  6.                 float ratio = (float)bitmap.Width / (float)bitmap.Height;
  7.                 float displayWidth, displayHeight;
  8.                 if (ratio * viewerPanel.Height > viewerPanel.Width)
  9.                 {
  10.                     displayWidth = viewerPanel.Width - 10;
  11.                     displayHeight = displayWidth / ratio;
  12.                 }
  13.                 else
  14.                 {
  15.                     displayHeight = viewerPanel.Height - 10;
  16.                     displayWidth = displayHeight * ratio;
  17.                 }
  18.                 float x = (viewerPanel.Width - displayWidth) / 2;
  19.                 float y = (viewerPanel.Height - displayHeight) / 2;
  20.                 System.Drawing.Rectangle rect = new System.Drawing.Rectangle(10, 10, 150, 100);
  21.                 e.Graphics.DrawImage(bitmap, x, y, displayWidth, displayHeight);
  22.                 e.Graphics.DrawRectangle(new Pen(Color.Gray), x, y, displayWidth, displayHeight);
  23.             }
  24.         }


 
J'aimerais, dans mon rectangle Rect, faire afficher un rectanlg extrait du BMP. :/


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
Reply

Marsh Posté le 02-10-2006 à 19:52:09    

Je suppose que rect représente les coordonnées et dimensions de l'image que tu veux extraire de bitmap ?

Reply

Marsh Posté le 02-10-2006 à 20:11:28    

C'était un test, pour voir si j'arrivais à ne faire afficher qu'une partie de mon image.
Le but de l'operation étant d'avoir une lettre en .PDF, de le transformer en image, et d'extraire la partie "Adresse" de la lettre (en haut à droite, par la, j'ai les coordonnées en centimetres du rectangle), et de faire afficher la partie extraite dans un viewerPanel.
 
Les problemes (:D):
 
- L'extraction du rectangle
- Le ratio
- L'angrandissement de la partie extraite.
 
Je suis débutant [:spamafote]
 
Merci pour ton PM, mais c'est le meme code que tas posté en premier, je ne suis pas arrivé à le faire marcher comme je veux :/
 


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed