Gestion d'une image JPEG
WIMP
Membre
image étant un NSImage de type .tif, j'obtiens son bitmap par:
Je ne parviens pas à déterminer quel est le code équivalent pour une image jpeg. Une idée ?
<br />NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc]initWithData: [image TIFFRepresentation]];<br />
Je ne parviens pas à déterminer quel est le code équivalent pour une image jpeg. Une idée ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
La methode -(NSData*)representationUsingType:(NSBitmapImageFileType)storageType properties:(NSDictionary *)properties
permet d'obtenir un NSData à partir d'un NSBitmapImageRep.
Et moi je veux obtenir un NSBitmapImageRep à partir d'un NSImage
J'ai essayé
Mais le résultat n'a rien à voir avec l'image attendue.
Donc ma question reste posée: comment créer un NSBitmapImageRep à partir d'un fichier .jpg ?
(Le but est de l'utiliser comme texture openGL)
NSImage *img=NSImage alloc] initWithContentsOfFile:@""];<br />imageRep=[NSBitmapImageRep imageRepWithData:[img TIFFRepresentation
JPEG-DATA=[imageRep representationUsingType...];
Non, ça ne marche, me suis-je mal expliqué ?
Je n'ai pas besoin de JPEG-DATA, seulement d'un NSBitmapImageRep, pour avoir un code du genre:
Ce qu'il faudrait c'est un JPEGRepresentation, mais ça n'existe pas, et je ne trouve pas de moyen de contourner ce problème.
Je travaille sure une appli qui utilise 72 Mo d'images TIFF, et j'aimerais bien réduire drastiquement cette taille en les remplaçant par des JPEG.
.
A partir d'un .tiff, je sais faire par:
Mais dans NSImage il n'y a pas l'équivalent de TIFFRepresentation (JPEGRepresentation par ex.), et à priori je ne connais pas le taux de compression de mon fichier .jpg... et donc je ne sais pas en tirer un NSData.
Je vais quand même essayer de me dépatouiller avec tout ça, il faut dire que certains jours la doc Apple me fait penser à une marmite de spaghettis...
Scuse, mais t'es vraiment bouché !
Le code que je t'ai donné se base sur une image TIFF, mais pourrait partir de n'importe quel format d'image.
Si tu as bien lu mon code (comme tu aurais dû bien lire la doc Apple), tu y aurais vu comment créer une NSBitmapImageRep au format JPEG avec un taux de compression de 20%, et ceci quelque soit la source de l'image (.tif , .jpg, .pnt, .bmp, etc...).
D'ailleurs, où as-tu vu que j'utilisais TIFFRepresentation ?
Je suis désolé, je ne parle pas le martien courrament, alors je n'ai pas compris ta question de départ.
.
En fait, mon code initial utilisant TIFFRepresentation était correct, mais c'est l'utilisation ultérieure du NSBitmapImageRep qui était erronnée:
L'instruction openGL glTexImage2D créant la texture à partir du NSBitmapImageRep
comprend un argument "format" indiquant si l'image contient un canal alpha.
Comme je mettais toujours GL_RGBA indiquant un canal alpha, une image TIFF était OK et une JPEG toute brouillée.
Le bon code, qui fonctionne pour tout type d'image est: