[C] Utiliser libjpeg pour du cropping
Résolu
Sauvegarde2
Messages postés
205
Date d'inscription
Statut
Membre
Dernière intervention
-
Sauvegarde2 Messages postés 205 Date d'inscription Statut Membre Dernière intervention -
Sauvegarde2 Messages postés 205 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
mon but est de découper une image hd en carrés de 256*256 pixels.
Pour cela j'utilise la libjpeg et les fonctions de jpegtran qui sont dans transupp.c.
Ces fonctions permettent de faire le découpage sans décompresser l'image source et sans compresser l'image de destination donc on gagne du temps.
Mon problème est que je n'arrive pas à réutiliser l'image source : pour que mon code fonctionne il faut que je refasse un fopen(source, "rb") à chaque itération (= création d'un carré).
Est-ce que quelqu'un qui connait la libjpeg pourrait m'aider ?
mon but est de découper une image hd en carrés de 256*256 pixels.
Pour cela j'utilise la libjpeg et les fonctions de jpegtran qui sont dans transupp.c.
Ces fonctions permettent de faire le découpage sans décompresser l'image source et sans compresser l'image de destination donc on gagne du temps.
Mon problème est que je n'arrive pas à réutiliser l'image source : pour que mon code fonctionne il faut que je refasse un fopen(source, "rb") à chaque itération (= création d'un carré).
Est-ce que quelqu'un qui connait la libjpeg pourrait m'aider ?
A voir également:
- [C] Utiliser libjpeg pour du cropping
- Utiliser chromecast - Guide
- Utiliser iphone comme webcam - Guide
- Utiliser tablette comme deuxieme ecran - Guide
- Comment utiliser utorrent - Télécharger - Téléchargement & Transfert
- Comment utiliser wetransfer - Guide
3 réponses
Je ne vois pas de boucle dans le code source que tu as donnée.
Je dirai comme ça, qu'il faut remettre le pointeur de fichier au début avant le nouveau quart d'image.
Je dirai comme ça, qu'il faut remettre le pointeur de fichier au début avant le nouveau quart d'image.
Voici l'essentiel de mon code :
/* Déclaration des variables */ FILE* fin, * fout; Uint i, I, j, J; Uint X, Y, W, H; char* tilename; char* zi, * zj; struct jpeg_decompress_struct srcinfo; struct jpeg_error_mgr srcerr; struct jpeg_compress_struct dstinfo; struct jpeg_error_mgr dsterr; struct jvirt_barray_control** srccoef; struct jvirt_barray_control** dstcoef; jpeg_transform_info tranopt; JCOPY_OPTION copyopt = JCOPYOPT_DEFAULT; // Paramétrages divers dont je vous fais grâce /* Préparation de l'image source */ srcinfo.err = jpeg_std_error(&srcerr); jpeg_create_decompress(&srcinfo); // Lancement des deux boucles imbriquées /* Suite de la création de la source ; j'aimerai sortir tout ça de la boucle mais si je le fais ça bug */ fin = fopen(imgpath, "rb"); jpeg_stdio_src(&srcinfo, fin); (void) jpeg_read_header(&srcinfo, TRUE); jcopy_markers_setup(&srcinfo, copyopt); /* Mise au point des paramètres de découpages */ tranopt = *(JPEG_Create_Transform(TRAN_CROP)); JPEG_Set_Crop_Rect(&tranopt, X, Y, W, H); jtransform_request_workspace(&srcinfo, &tranopt); srccoef = jpeg_read_coefficients(&srcinfo); // Création de l'image destination // Application des transformations // Nettoyage et reprise de la boucle