Soyez le premier à donner votre avis sur cette source.
Snippet vu 9 134 fois - Téléchargée 19 fois
<?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); ?>
22 mars 2008 à 15:45
Bonne continuation,
GallyHC
22 mars 2008 à 15:44
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
26 sept. 2007 à 18:27
Par contre pour les PSD tu peux essayer la bibliothèque Java Imagero : http://reader.imagero.com
25 sept. 2007 à 12:19
Mais j'ai une petite question, est-ce que ça peut fonctionner avec un fichier photoshop ? .psd ?
Merci
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.