質問編集履歴

1 誤字

Nekonzen

Nekonzen score 0

2020/06/11 12:11  投稿

PHPのImageMagickでPDFをJPG変換するとテキストにジャギー
### 前提・実現したいこと
PHPのimagemagickを使いPDFをJPGに変換しています。
バージョンアップした新サーバーだとテキストにジャギーが出て太くなります。
解決方法をご存じの方がいらっしゃいましたらご教示いただけますでしょうか。
●旧サーバー
PHP5.2.4-2ubuntu5.27
Imagick module version:2.0.1
ImageMagick version:ImageMagick 6.3.7 12/02/10 Q16
●新サーバー
PHP7.3.7
Imagick module version:3.4.3
ImageMagick version:ImageMagick 6.7.8-9 2019-02-01 Q16
### 比較キャプチャ
![比較キャプチャ](036858a2eb1648e45f3a33f1d1a8177d.jpeg)
### 該当のソースコード
●旧サーバー  
```ここに言語名を入力  
   $immgk = new Imagick();  
   //読み込むPDFのパス  
   $immgk->readImage($file_url);  
   //特定のPDFのページ 0が表紙  
   $immgk->setImageIndex(0);  
   // PNG 形式に変換  
   $immgk->setImageFormat("jpg");  
   // リサイズ 横200、縦は0でオート  
   $immgk->thumbnailImage(0, 200);  
   // CMYK だったら sRGB に変換する  
   $cs = $immgk->getImageColorspace();  
   if ($cs == Imagick::COLORSPACE_CMYK) {  
       $immgk->setImageColorspace(Imagick::COLORSPACE_SRGB);  
   }  
   // 指定フォルダに書き込み  
   $immgk->writeImage($out_file_path);  
```  
●新サーバー  
```ここに言語名を入力
   $immgk = new Imagick();
   //読み込むPDFのパス
   $immgk->readImage($file_url);
   //特定のPDFのページ 0が表紙
   $immgk->setIteratorIndex(0);
   // リサイズ 横200、縦は0でオート
   $immgk->thumbnailImage(0, 200);
   // 透過だと黒くなるため背景色【追加】
   // 透過だと黒くなるため背景色【新サーバー追加】
   $immgk->paintOpaqueImage(new ImagickPixel('rgba( 0, 0, 0, 0.0)'), new ImagickPixel('white'), 0);
   // PNG 形式に変換
   $immgk->setImageFormat("jpg");
   // CMYK だったら sRGB に変換する
   $cs = $immgk->getImageColorspace();
   if ($cs == Imagick::COLORSPACE_CMYK) {
       $immgk->setImageColorspace(Imagick::COLORSPACE_SRGB);
   }
   // 指定フォルダに書き込み
   $immgk->writeImage($out_file_path);
```
  • PHP

    38102 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • ImageMagick

    167 questions

    ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。

  • imagick

    18 questions

    IMagickは、PHPからImageMagickを使う場合に使用する拡張インターフェースです。PHPで簡単にImageMagickの機能が利用できます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る