У меня возникла странная проблема, в которой я не могу разобраться. Я использую 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
Imagick создает PDF, даже если для setImageFormat установлено значение JPEG ⇐ Php
Кемеровские программисты php общаются здесь
1722285115
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;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78795225/imagick-creating-pdf-even-though-setimageformat-is-set-to-jpeg[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия