Imagick создает PDF, даже если для setImageFormat установлено значение JPEGPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Imagick создает PDF, даже если для setImageFormat установлено значение JPEG

Сообщение Anonymous »

У меня возникла странная проблема, в которой я не могу разобраться. Я использую Imagick для создания миниатюр PDF-файлов в формате JPG, которые загружаются в специальный инструмент администратора. Однако Imagick создает PDF-файлы, даже если для setImageFormat установлено значение JPEG, и, что добавляет путаницы, это происходит только тогда, когда PDF-файл состоит из одной страницы. Если это многостраничный PDF-файл, создаются миниатюры в формате jpg.
public function generateCopies() {
if (empty($this->copyPathFormats)) {
return True;
}

if (! is_array($this->copyPathFormats)) {
throw new \InvalidArgumentException('Asset::copyPathFormat must be an array. '.gettype($this->copyPathFormats).' provided.');
}

foreach ($this->copyPathFormats as $key => $copyPathFormat) {
if ($key === 'finder') {
continue;
}

$path = $this->basePath.$this->pathParamSubstitution($copyPathFormat, $this->pathParam);
if (! (is_dir($path) || mkdir($path, 0777, True))) {
throw new \RuntimeException($path.' could not be found or created.');
}

$img = new \Imagick($this->path.$this->name);
$img->setImageCompressionQuality( 89 );

$copyName = $this->name;
$format = $img->getImageFormat();

if ($format === 'PDF') {
$img = new \Imagick();
$img->setResolution(150,150);
$img->readImage($this->path.$this->name.'[0]');
$img->setImageCompressionQuality( 70 );
$img = $img->flattenImages();
$img->setImageFormat('jpeg');
$filename = pathinfo($this->name, PATHINFO_FILENAME);
$copyName = $filename.'.jpg';
}

$geometry = $img->getImageGeometry();
$width = $geometry['width'] >= $geometry['height'] ? $this->copySizeConstraints[$key] : 0;
$height = $geometry['height'] > $geometry['width'] ? $this->copySizeConstraints[$key] : 0;

if ($img->scaleImage($width,$height,False) !== True) {
\RuntimeException('Cannot resize the image.');
}

if ($img->writeImage($path.$copyName) !== True) {
throw new \RuntimeException('Cannot write the resized copy to '.$path.$this->name);
}
$img->destroy();
}

return True;
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... et-to-jpeg
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»