【问题标题】:PHP Imagick Gives black and white for some pdf and colors for some pdfPHP Imagick 为一些 pdf 提供黑色和白色,为一些 pdf 提供颜色
【发布时间】:2022-01-03 00:15:41
【问题描述】:

它是随机的,或者我认为它是大于 1mb 的 pdf 它有时将缩略图输出为彩色,有时输出为黑白

这是我的代码

public function convertPdfToImage($_pdf) {

    if(file_prepare_directory($this->thumbnailDirectory, FILE_CREATE_DIRECTORY)) {
      try {
        $date = new \DateTime();
        $thumbFileName = $date->getTimestamp() . '.png';
        $imagick = new Imagick();
        $imagick->setResolution(50,50);
        $imagick->readImage($_pdf);
        $imagick->setIteratorIndex(0);
        $imagick->setImageFormat('png');
        $thumbFile = \Drupal::service('file_system')->realpath($this->thumbnailDirectory . '/' . $thumbFileName);
        if($imagick->writeImage($thumbFile)) {
          return $this->thumbnailDirectory . '/' . $thumbFileName;
        }else{
          \Drupal::logger('dtm_misc')->error('Error Saving PDF Thumbnail');
        }
      }catch (\Exception $e) {
          $imagick->destroy();
        \Drupal::logger('dtm_misc')->error('PDF To Image Exception: ' . $e->getMessage());
      }
    }
  }

任何帮助将不胜感激..谢谢

【问题讨论】:

  • 需要看一个例子;一个是单色的,一个是彩色的。
  • 功能相同,但当 pdf 文件大小大于 1mb 时,它会给出单色图像。
  • 嗯,也许 PDF 本身的颜色配置文件是问题所在。您可以尝试从 PDF 中获取当前颜色空间并为您的图像更改它。喜欢:php.net/manual/de/imagick.setimagecolorspace.php#116565
  • 当我在加载pdf之前设置色彩空间时它起作用了``` $imagick->SetColorspace(Imagick::COLORSPACE_SRGB); ```

标签: php drupal imagemagick ghostscript imagick


【解决方案1】:

这是上述讨论的有效解决方案。

  public function convertPdfToImage($_pdf) {
    if (file_prepare_directory($this->thumbnailDirectory, FILE_CREATE_DIRECTORY)) {
      try {
        $date = new \DateTime();
        $thumbFileName = $date->getTimestamp() . '.png';
        $imagick = new Imagick();
        $imagick->setResolution(50, 50);
        $imagick->setColorspace(Imagick::COLORSPACE_SRGB); // SOLUTION
        $imagick->readImage($_pdf);
        $imagick->setIteratorIndex(0);
        $imagick->setImageFormat('png');
        $thumbFile = \Drupal::service('file_system')->realpath($this->thumbnailDirectory . '/' . $thumbFileName);
        if ($imagick->writeImage($thumbFile)) {
          return $this->thumbnailDirectory . '/' . $thumbFileName;
        } else {
          \Drupal::logger('dtm_misc')->error('Error Saving PDF Thumbnail');
        }
      } catch (\Exception $e) {
        $imagick->destroy();
        \Drupal::logger('dtm_misc')->error('PDF To Image Exception: ' . $e->getMessage());
      }
    }
  }

【讨论】:

    猜你喜欢
    • 2013-08-29
    • 2011-02-26
    • 2018-07-02
    • 1970-01-01
    • 2018-01-03
    • 2015-10-12
    • 2023-03-16
    • 1970-01-01
    • 2018-03-07
    相关资源
    最近更新 更多