begin process at 2012 02 12 11:09:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > EXTRAIRE LA MINIATURE D'UN FICHIER .AI (ADOBE ILLUSTRATOR)

EXTRAIRE LA MINIATURE D'UN FICHIER .AI (ADOBE ILLUSTRATOR)


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :miniature, illustrator, thumbnail, preview, AI Niveau :Initié Date de création :24/09/2007 Date de mise à jour :14/03/2008 16:41:52 Vu :6 961

Auteur : antares7364

Ecrire un message privé
Site perso
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Petit code source pour extraire la miniature (aussi appellée "thumbnail" ou "preview") contenue à l'intérieur même des fichiers au format Adobe Illustrator (.AI).
Pour info, la miniature fait toujours 128 pixels de largeur ou de hauteur maximum, et est en 256 couleurs.
Le script consiste en une fonction PHP qui recoit comme argument le chemin d'accès au fichier AI, et renvoie une image GD, que l'on peut ensuite sortir en JPG, PNG ou autre.

Merci de ne pas utiliser cette source dans un projet commercial sans mon accord préalable (non-concurrence avec mon propre projet).

Vous pourrez retrouver cette source sur mon site :
http://www.devkb.org/php/46-Extraire-la-miniatur e-d-un-fichier-AI-Adobe-Illustrator-en-PHP

Et pour d'autres sources du même type, rendez vous sur http://www.devkb.org/ !

Bon codage, et PHP powaaaa ;-)
Olivier Ligny

Source

  • <?php
  • function Extract_AI_thumbnail($AIfile) {
  • // Extract thumbnails from .AI files
  • // input : path to file
  • // output : GD image
  • // author : Olivier Ligny, antares7364 'at' yahoo.fr, 2007-09-20
  • // thanks to : http://groups.google.com/group/adobe.illustrator.windows/browse_thread/thread/715cc9efe657f280/0a9d7b1244b59062?hl=en&lnk=st&q=AI7_Thumbnail+%22hex+bytes%22&rnum=1
  • $f = fopen($AIfile, 'rb');
  • $data = fread($f, 100000);
  • fclose($f);
  • $start = strpos($data, '%AI7_Thumbnail:');
  • $end = strpos($data, '%%EndData');
  • if(!$start || !$end) return false;
  • //echo "TN: from $start to $end\r\n";
  • //die(substr($data, $start, $end-$start));
  • $tnData = substr($data, $start, $end-$start);
  • //die(substr($tnData, 0, 10));
  • $header = substr($tnData, strpos($tnData,':')+1, 100);
  • $header = substr($header, 0, strpos($header,"\r"));
  • //die(str_replace("\r", "\r\n", $header));
  • $imageSize = explode(' ', trim($header));
  • //echo "Image size : ".$imageSize[0].' * '.$imageSize[1]."\r\n"; //exit;
  • if($imageSize[0] * $imageSize[1] == 0) return false; //die("Error: invalid thumbnail header : $header\r\n");
  • $imgData = substr($tnData, strpos($tnData,'Hex Bytes')+strlen('Hex Bytes'), strlen($tnData));
  • $imgData = trim($imgData);
  • $imgData = str_replace("\r", "", $imgData);
  • $imgData = str_replace("\n", "", $imgData);
  • $imgData = str_replace("%", "", $imgData);
  • $imgData = str_replace("", "", $imgData);
  • $len = strlen($imgData);
  • $binData = pack("H" . $len, $imgData);
  • $arr = Array();
  • for($i=0; $i<strlen($binData); $i++) $arr[$i] = ord($binData[$i]);
  • $byteArray = $arr;
  • $gdimg = imagecreatetruecolor($imageSize[0], $imageSize[1]);
  • $colors = Array();
  • for($c=0; $c<256*3; $c+=3) {
  • $colors[] = imagecolorallocate($gdimg, $byteArray[$c+0], $byteArray[$c+1], $byteArray[$c+2]);
  • }
  • $refs = Array();
  • if($binData[256*3+0].$binData[256*3+1].$binData[256*3+2]=='RLE') {
  • for($c=256*3; $c<count($byteArray); $c++) {
  • $b = $byteArray[$c];
  • if($b != 0xFD) $refs[] = $b;
  • else {
  • $c++;
  • $b = $byteArray[$c];
  • if($b == 0xFD) $refs[] = $b;
  • else {
  • $n = $b;
  • $c++;
  • $b = $byteArray[$c];
  • for($i=0; $i<$n; $i++) $refs[] = $b;
  • }
  • }
  • }
  • } else {
  • for($c=256*3; $c<count($byteArray); $c++) {
  • $refs[] = $byteArray[$c];
  • }
  • }
  • for($y=0; $y<$imageSize[1]; $y++) {
  • for($x=0; $x<$imageSize[0]; $x++) {
  • $n = $refs[$y*$imageSize[0] + $x];
  • @imagesetpixel($gdimg, $x, $y, $colors[$n]);
  • }
  • }
  • return $gdimg;
  • }
  • $img = Extract_AI_thumbnail('fichier.ai');
  • imagejpeg($img, 'fichier.jpg', 85);
  • ?>
<?php


function Extract_AI_thumbnail($AIfile) {
	
	// Extract thumbnails from .AI files
	// input : path to file
	// output : GD image
	// author : Olivier Ligny, antares7364 'at' yahoo.fr, 2007-09-20
	// thanks to : http://groups.google.com/group/adobe.illustrator.windows/browse_thread/thread/715cc9efe657f280/0a9d7b1244b59062?hl=en&lnk=st&q=AI7_Thumbnail+%22hex+bytes%22&rnum=1

	$f = fopen($AIfile, 'rb');
	$data = fread($f, 100000);
	fclose($f);

	$start = strpos($data, '%AI7_Thumbnail:');
	$end   = strpos($data, '%%EndData');
	if(!$start || !$end) return false;
	//echo "TN: from $start to $end\r\n";
	//die(substr($data, $start, $end-$start));
	$tnData = substr($data, $start, $end-$start);
	//die(substr($tnData, 0, 10));
	$header = substr($tnData, strpos($tnData,':')+1, 100);
	$header = substr($header, 0, strpos($header,"\r"));
	//die(str_replace("\r", "\r\n", $header));
	$imageSize = explode(' ', trim($header));
	//echo "Image size : ".$imageSize[0].' * '.$imageSize[1]."\r\n"; //exit;
	if($imageSize[0] * $imageSize[1] == 0) return false; //die("Error: invalid thumbnail header : $header\r\n");
	$imgData = substr($tnData, strpos($tnData,'Hex Bytes')+strlen('Hex Bytes'), strlen($tnData));
	$imgData = trim($imgData);
	$imgData = str_replace("\r", "", $imgData);
	$imgData = str_replace("\n", "", $imgData);
	$imgData = str_replace("%", "", $imgData);
	$imgData = str_replace("", "", $imgData);
	$len = strlen($imgData);
	$binData = pack("H" . $len, $imgData);
	$arr = Array();
	for($i=0; $i<strlen($binData); $i++) $arr[$i] = ord($binData[$i]);
	$byteArray = $arr;
	$gdimg = imagecreatetruecolor($imageSize[0], $imageSize[1]);
	$colors = Array();
	for($c=0; $c<256*3; $c+=3) {
		$colors[] = imagecolorallocate($gdimg, $byteArray[$c+0], $byteArray[$c+1], $byteArray[$c+2]);
	}
	$refs = Array();
	if($binData[256*3+0].$binData[256*3+1].$binData[256*3+2]=='RLE') {
		for($c=256*3; $c<count($byteArray); $c++) {
			$b = $byteArray[$c];
			if($b != 0xFD) $refs[] = $b;
			else {
				$c++;
				$b = $byteArray[$c];
				if($b == 0xFD) $refs[] = $b;
				else {
					$n = $b;
					$c++;
					$b = $byteArray[$c];
					for($i=0; $i<$n; $i++) $refs[] = $b;
				}
			}
		}
	} else {
		for($c=256*3; $c<count($byteArray); $c++) {
			$refs[] = $byteArray[$c];
		}
	}
	for($y=0; $y<$imageSize[1]; $y++) {
		for($x=0; $x<$imageSize[0]; $x++) {
			$n = $refs[$y*$imageSize[0] + $x];
			@imagesetpixel($gdimg, $x, $y, $colors[$n]);
		}
	}
	return $gdimg;
}


$img = Extract_AI_thumbnail('fichier.ai');
imagejpeg($img, 'fichier.jpg', 85);


?>



 Historique

14 mars 2008 16:41:52 :
ajout de références

 Sources du même auteur

ENVOYER UN MSG VIA PHP VERS ICQ : FONCTION SEND_ICQ()

 Sources de la même categorie

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec une capture AMÉLIORATION : CAMEMBERT par asphator
GESTION DE COULEUR par manuche
Source avec Zip NAVIGATOR (+CSSDETECTOR) par xXVoxPopuliXx
COMMENT, AVEC GD, DESSINER UN RECTANGLE TRANSPARENT PLEIN AV... par Rainbow

 Sources en rapport avec celle ci

UPLOAD IMAGE AVEC MINIATURE par dilar
Source avec Zip FAIRE DES MINIATURE D'IMAGE, DES PHOTOS POUR LES PROFILS par zulrigh
Source avec Zip Source avec une capture DIAPORAMA AVEC AJOUT ET REDIMENSIONEMENT DE PHOTOS, CRÉATION... par giloum
Source avec Zip Source avec une capture VIGNETTE EN RECADRANT AVEC TAILLE FIXE! par GillesWebmaster
CRÉER UNE MINIATURE LIMITÉE EN SURFACE (ET PAS EN DIMENSIONS... par MadM@tt

Commentaires et avis

Commentaire de D1stort1on le 25/09/2007 12:19:38

Salut, sympa ce code.

Mais j'ai une petite question, est-ce que ça peut fonctionner avec un fichier photoshop ? .psd ?

Merci

Commentaire de antares7364 le 26/09/2007 18:27:43

Non ça ne marche qu'avec les .AI, désolé.
Par contre pour les PSD tu peux essayer la bibliothèque Java Imagero : http://reader.imagero.com

Commentaire de Gally le 22/03/2008 15:44:15

Bonjour,

Je ne sais pas pourquoi mais j'ai un decallage en x et y de quelque pixels et je me demande si vous aviez vu le problemes.

La sources et vraiment pas mal je met perso 8/10

Bonne contination,
GallyHC

Commentaire de Gally le 22/03/2008 15:45:42 9/10

au dernier moment j'ai preferais mettre la note de 9/10. Pour l'idée en plus.

Bonne continuation,
GallyHC

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Thumbnail en php ? [ par Vag ] Salut à tousJe voudrai savoir s'il est possible de générer une miniature (thumbnail) de résolution inférieure d'une image uploadée sur le serveur, tou Nouveau site - Recrutement [ par voicivenir ] Bonjour,Je vais prochainement créer un site de comunautée graphique. Ce site sera appelé "Project Hyko" et proposera des kits designs, des tutoriaux.. Copyright image [ par kimengumi ] BonjourJ'ai bien aimé le script de webdesignasp pour écrire un copyright sur les images.En fait, j'enregistre l'image telle quelle sur mon serveur et Qualité miniature [ par TiotBour ] Bonjour a tous !J'ai un probleme de qualité avec mes miniatures qui sont faites automatiquement par la librairie GD2.Elle sont automatiquement redimen Liens PHP (appel d'un fichier PHP) [ par vincf1 ] Bonjour à tous tout d'abord Voila, j'explique mon petit soucis (je suis novice en PHP ).Mon but est d'afficher une image miniat erreur avec la fonction imagecreatefrom JPEG [ par iDoc ] Lors du transfert de mon site, seule une procédure ne s'exécute pas surle nouveau serveur. Pourtant sur mon compte free, elle fonctionne bien.J'utilis Thumbnails de mauvaise qualité [ par RockmanX ] Salut!Je me suis inspir&#233; d'une source de ce site pour cr&#233;er cette fonction:$imgsrc est l'adresse de l'image de mon serveur, $impwidth est la La fonction exif_thumbnail() ne marche pas!! [ par ImmortalPC ] Salut, pour quoi le serveur me dit que la fonction exif_thumbnail() n'existe pas ?(easyphp) &lt;?php header('Content-type: ' .image_type_to_mime_type( exif_thumbnail pas d' image [ par ImmortalPC ] Salut, je compernds pas o&#249; est l'&#233;rreur, il y a pas d'image du tout. &lt;?php $type = image_type_to_mime_type(IMAGETYPE_JPEG); header('Conte Où est l'érreur ? (Image Miniature) [ par ImmortalPC ] Salut, apr&#232;s avoir cherch&#233; une solution pour faire une image miniature en automatique j'ai finalement trouv&#233; un script super Voici le s


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales