J'essaie de copier une image d'un fichier à un autre en utilisant libjpeg
. J'ai essayé d'utiliser jpeg_read_scanlines
/jpeg_write_scanlines
pour copier des données d'image mais pour autant que je sache, ces fonctions calculent DCT/IDCT plus de/quantification. Je n'ai pas besoin d'effectuer ces opérations, en fait je ne le veux pas. Après la copie de données, je veux manipuler les coefficients DCT quantifiés, donc utiliser ImageMagick ou un autre logiciel n'est pas une option. Existe-t-il un moyen plus rapide de le faire, sans étape IDCT/DCT?libjpeg: copie de données entières
Répondre
Oui. Vous pouvez utiliser jpeg_read_coefficients() qui lira les coefficients DCT quantifiés pour vous. Vous pouvez ensuite utiliser jpeg_write_coefficients() pour les réécrire dans une autre image. L'usage typique serait quelque chose comme:
struct jpeg_decompress_struct decomp;
struct jpeg_compress_struct comp;
jvirt_barray_ptr *coefficients;
/* Set your error handlers for decomp and comp here */
jpeg_create_decompress(&decomp);
/* Set your decompression source here */
jpeg_read_header(&decomp, 1);
coefficients = read_coefficients(&decomp);
jpeg_create_compress(&comp);
jpeg_copy_critical_parameters(&decomp, &comp);
comp.in_color_space = decomp.out_color_space; /* Not copied by previous call */
jpeg_write_coefficients(&comp, coefficients);
jpeg_finish_compress(&comp);
/* Destroy comp and decomp */
Ce truc est tout décrit dans le fichier libjpeg.txt (en particulier la section vraiment des données brutes) qui est inclus dans la distribution source de libjpeg-turbo. Cette section comprend également des informations sur l'utilisation de fait les coefficients TCD et les manipuler avant de les écrire à nouveau, mais le débit de base qui va:
/* assume that variables are as above */
for(int ci = 0; ci < total_components_in_image; ci++) {
jpeg_component_info *info = decomp.comp_info + ci;
JBLOCKARRAY buffer = (*decomp.mem->access_virt_barray)
((j_common_ptr) &decomp, coefficients[ci], 0, info->height_in_blocks, 0);
}
Alors maintenant, le tampon est un tableau en trois dimensions où tampon [y] [x ] [c] est le c e coefficient dans le bloc x et le y bloc vers le bas. access_virt_barray est déclaré quelque chose comme:
access_virt_barray(j_common_ptr cinfo, jvirt_barray_ptr ptr,
JDIMENSION starting_row, JDIMENSION rows_to_read, boolean is_write_access);
- 1. alternatives à jpeg_read_header libjpeg
- 2. Problème libjpeg/CreateDIBSection
- 3. Compiler libjpeg pour iOS
- 4. libjpeg PIL photologue django
- 5. Comment supprimer un nœud de données entières
- 6. La vitesse de compression de libjpeg-turbo n'a pas de différence avec libjpeg dans mon programme
- 7. Problème liant libjpeg sur Android
- 8. Dire sage où trouver libjpeg
- 9. alignement du pointeur dans libjpeg
- 10. Mysql Copie de données
- 11. Copie de données active
- 12. scala InputStreamReader lecture non données entières (fichier)
- 13. Trier des données entières avec tablesort jQuery
- 14. Erreurs de bibliothèque d'imagerie Python avec libjpeg
- 15. PHP imagecreatefromstring(): gd-jpeg, libjpeg: erreur récupérable
- 16. copie de données de squirrelmail
- 17. privilège de base de données mysql avec des autorisations entières
- 18. table de copie sans la copie de données
- 19. Sql COALESCE lignes entières?
- 20. Génération d'histogrammes simples de données entières en C#
- 21. Python avec PIL et Libjpeg sur Leopard
- 22. Ruby wrapper pour libjpeg pour redimensionner l'image
- 23. Accéder aux fonctions LibJPEG via Magick ++
- 24. libjpeg dans le projet 'Application Cocoa'
- 25. Variables entières à WIX
- 26. Copie de table de base de données
- 27. python: Génération de partitions entières
- 28. Réduction de fractions entières algorithme
- 29. Count mots entières de phrases
- 30. Regex Motif de correspondances entières
Voici un autre exemple de travail de lecture des coefficients TCD: http://daniellerch.me/snippets/stego/dctdump.c La documentation est également disponible en ligne pour un accès facile à l'adresse http://www.opensource.apple.com/source/tcl/tcl-87/tcl_ext/tkimg/tkimg/libjpeg/libjpeg.doc – LostSalad