Problème avec les images PNG en C#
De travail dans Visual Studio 2008. Je suis en train de dessiner sur une image PNG et enregistrer l'image à nouveau.
Je ne les suivants:
private Image img = Image.FromFile("file.png");
private Graphics newGraphics;
Et dans le constructeur:
newGraphics = Graphics.FromImage(img);
La création de la solution ne donne aucune erreur. Quand j'essaie de le lancer, j'obtiens ceci:
Un objet Graphique ne peut pas être créé
à partir d'une image qui a indexé
format de pixel.
Je n'ai pas beaucoup d'expérience avec l'utilisation d'images en C#. Qu'est-ce que cela signifie et comment puis-je y remédier?
EDIT: par le biais de débogage de Visual Studio me dit que l'image a un format8bppindexed
Format de Pixel.
Donc si je ne peux pas utiliser la classe Graphics, que dois-je utiliser?
EDIT2: Après la lecture de cette, je pense qu'il est sûr de supposer que je ferais mieux de bâton pour les fichiers JPG lorsque l'on travaille avec GDI+, non?
EDIT3: mon aide-déclarations:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
J'utilise les fichiers PNG avec les Graphiques de l'objet de tous les temps. Postez un lien vers le fichier PNG que vous utilisez, et nous allons voir quel est le problème avec elle.
En interne GDI travaille avec des Bitmaps, JPG est compressé et vraiment génial d'avoir une image compressée pour travailler avec les données brutes. Votre image est 8bppIndexed, c'est un format Bitmap où les couleurs sont stockées dans la palette de ne pas les données de pixel. Les objets Graphiques ne peuvent pas modifier les valeurs de pixel directement, ça ne changera pas. Vous avez besoin de les convertir à 24bppRGB
OriginalL'auteur KdgDev | 2009-10-26
Vous devez vous connecter pour publier un commentaire.
Sans une meilleure PNG bibliothèque qui prend en charge indexé Png vous êtes hors de la chance de tenter de tirer de l'image, puisque de toute évidence l'objet de graphique GDI+ ne prend pas en charge les images indexées.
Si vous n'avez pas besoin d'utiliser indexé Png vous pourrait intercepter cette erreur et de convertir vos commentaires réguliers RVB Png à l'aide d'un 3ème partie utilitaire.
edit:
J'ai trouvé ce lien http://fci-h.blogspot.com/2008/02/c-indexed-pixel-problem.html qui donne une méthode pour dessiner sur votre image, mais il n'affecte pas l'original, juste une copie, vous pouvez Sauvegarder() si vous avez besoin d'.
Dans le cas où le lien est en bas:
Que blog fait. Merci.
OriginalL'auteur Ron Warholic
Vous ne pouvez pas créer un graphique à partir d'une image indexée format (PNG, GIF,...).
Vous devez utiliser une image (fichier ou convertir votre image à une image bitmap).
Peut-être que je n'ai pas le besoin de "l'aide" de l'énoncé, mais Visual Studio ne reconnaît pas cette fonction.
Quelle fonction ?
Selon les docs, cela ne fonctionne pas avec une image Indexée, msdn.microsoft.com/en-us/library/...
badbod99 > Vous avez raté l'img = new Image(img);
OriginalL'auteur Guillaume