J'ai un script PHP pour créer une vignette JPG de PDF comme suit;
<?php $file ="test.pdf"; $im = new imagick(realpath($file).'[0]'); $im->setImageFormat("jpg"); $im->resizeImage(200,200,1,0); // start buffering ob_start(); $thumbnail = $im->getImageBlob(); $contents = ob_get_contents(); ob_end_clean(); echo "<img src='data:image/jpg;base64,".base64_encode($thumbnail)."' />"; ?>
7 Réponses :
Si votre version de Imagick n'est pas à jour, le SetImagebackgroundColor peut être faux.
échanger la ligne suivante p> à ceci (version Imagick> = 2.1 .0) p> ou (version imagick <2.1.0) p>
J'ai apporté des changements dans ma question .. Jetez un coup d'œil .. et votre suggestion ne fonctionne pas ..
@blasteralfred Pourriez-vous donner accès à une copie de votre PDF, car je pense que la question peut être liée à cela plutôt que le code que vous avez maintenant fourni ci-dessus. Le code mis à jour fonctionne sans problème avec PDF que j'ai.
Je l'ai résolu par;
SET CompressionQuality code> ne fonctionne pas réellement dans cette situation. Pour le changement UTILISATION DE QUALITÉ
SETITIMAGE COMPRESSIQUALITÉ CODE>
L'ajout simplement que cela empêche le JPG d'être créé avec un fond noir
Où? S'il vous plaît donner une réponse au format de la question. Donc, dans ce cas, PHP valide.
$ IM-> SETTIMAGELPHACLANNEL (Imagick :: AlphaChannel_ReMove);
Modifier ce code $ IM-> SETITIMAGEFORMAT ("JPG"); code> à ce code
$ IM-> SETITIMAGEFORMAT ("PNG"); CODE> Si vous faites face à un problème de couleur d'arrière-plan. p>
Aucune des réponses précédemment affichées a fonctionné pour moi, cependant, le ci-dessous a fait:
$image = new Imagick; $image->setResolution(300, 300); $image->setBackgroundColor('white'); $image->readImage("{$originalPath}[0]"); $image->setImageFormat('jpg'); $image->scaleImage(500, 500, true); $image->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN); $image->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
Après des tentatives sans fin d'appuyer un fichier PDF avec une image JPEG sans obtenir des zones noires, j'ai trouvé la solution: la fonction utilisé dans cette commande fonctionne parfaitement: P> < Pré> xxx pré> p>
Il suffit d'utiliser des flattensimages () juste après la création d'un nouveau imagick (): modifier: la méthode FlattenImages a été obsolète et supprimée. Utilisez P> $im = $im->mergeImageLayers( imagick::LAYERMETHOD_FLATTEN );
Une copie ou un lien vers le fichier JPG en question serait utile et un tir à l'écran de la sortie résultante.
Laurence Burke: Voici l'image résultante i.imgur.com/jyqc6.jpg
Quel est votre style CSS comme et pourriez-vous relier le JPG original ???
@Laurence Burke, le ci-dessus est le fichier JPG d'origine. Je n'ai pas de coiffage du tout ..