Comment faire pour obtenir et définir propertyitems pour une image
J'essaie de comprendre ces deux méthodes de l'image ou de l'Image. Étant .SetPropertyItem()
et l'autre étant .GetPropertyItem()
.
Je suis complètement confus quant à la façon dont la documentation dit que je suis pour définir une propriété de l'élément.
De la La Documentation De Microsoft il dit que nous devrions choisir une propriété de l'élément par un id d'une propriété de l'élément qui existent déjà dans l'image, donner une propriété de l'élément d'un nouvel ID, définissez les propriétés et définissez la propriété d'image de l'élément avec qui a récupéré la propriété de l'élément.
C'est tellement bizarre, mais ce qui est vraiment moi, c'est qu'il ne suffit pas de définir l'id de la propriété élément à n'importe quel ID, nous avons à définir la propriété id de l'élément à un code qui existent déjà dans la propriété id de l'élément de la liste.
Ce qui est déroutant, c'est que je suis en utilisant une propriété qui est déjà réglé par un autre moyen et supérieur de la c'est bien et puis l'ajouter à nouveau de l'image avec un autre IDENTIFIANT existant de la propriété id de liste.
Ce qui me manque ici? N'est-il pas un moyen de créer simplement un nouveau PropertyItem puis ajouter que la propriété de l'élément avec une ID de l'image ou image?
Voici un exemple de ce que je suis en train de parler. L'ID est de 20752 est un propertyitem que l'image a déjà fait, et lorsque j'ai mis l'ID de la PropertyItem que 20753 est un code que l'Image a ainsi.
Cela permettra de définir correctement la propriété item.
private void Form1_Load(object sender, EventArgs e)
{
string path = Environment.CurrentDirectory + @"\sample.png";
Image image = Image.FromFile(path);
PropertyItem pi = image.GetPropertyItem(20752);
pi.Id = 20753;
pi.Type = 1;
pi.Value = Encoding.UTF8.GetBytes("MyImageInfo");
pi.Len = pi.Value.Length;
image.SetPropertyItem(pi);
image.Save(Environment.CurrentDirectory + @"\sample2.png");
}
Cela permettra de récupérer correctement les PropertyItem.
private void Form1_Load(object sender, EventArgs e)
{
string path = Environment.CurrentDirectory + @"\sample.png";
Image image = Image.FromFile(path);
PropertyItem propItem = image.GetPropertyItem(20753);
}
Il y a moyen que je puisse créer un nouveau PropertyItem avec ma propre identité sans avoir à faire tous que des choses bizarres? Ou ai-je raté quelque chose ici?
Et ou, est la meilleure façon de définir d'autres types de propriété pour une image ou image? Je suis à la recherche d'un moyen de base pour enregistrer de l'information et de la récupérer à une date ultérieure.
Ce que je fais mal?
OriginalL'auteur Filling The Stack is What I DO | 2013-09-16
Vous devez vous connecter pour publier un commentaire.
C'est un peu tardif, mais il EST possible de créer un nouveau PropertyItem exemple, sans passer par la douleur d'avoir à établir un à partir d'une autre source:
Cela permet de contourner le manque de constructeur indiquée sur PropertyItem (qui semblait m'empêcher de l'utilisation du Système.La réflexion)
Ce doit être la accepté de répondre...
Un avertissement si vous utilisez cette technique d'ailleurs. Cela contourne le Type du constructeur et vous donne en arrière, comme la méthode implique, juste un objet non initialisé -- une référence typée pour certains de la mémoire allouée. J'ai toujours donné un +1 car il a grandement simplifié mon code dans lequel j'étais Microsoft suivant la recommandation pour interroger un autre PropertyItem et de modifier son ID, etc. <se plaindre>Tellement bordélique...</grognent>
Excellent point!
Pour VB.NET, vous pouvez utiliser
Dim pi As PropertyItem = CType(FormatterServices.GetUninitializedObject(GetType(PropertyItem)), PropertyItem)
OriginalL'auteur ne1410s