Как плавно растеризовать PDF с помощью API? - PullRequest
0 голосов
/ 17 декабря 2018

Я хотел бы растеризовать исходный файл PDF (в данном случае в PNG, 500x500 пикселей), используя эти привязки golang для ImageMagick6.В CLI я могу сделать это, используя

convert -density 5000 -define psd:fit-page=500x test.pdf -resize 500x test.png

, что приводит к плавно отображаемому изображению.

Что мне не удается сделать сейчас, так это произвести нечто подобное с использованием API:либо полученное изображение имеет масштабированные пиксели, либо оно размыто и имеет размер 500x500 пикселей, либо оно имеет «оригинальный» размер.

Вот минимальный фрагмент кода моей игровой площадки:

package main

import "gopkg.in/gographics/imagick.v2/imagick"

func main() {
    imagick.Initialize()
    defer imagick.Terminate()
    mw := imagick.NewMagickWand()
    defer mw.Destroy()

    mw.SetImageResolution(5000,5000)
    mw.SetOption("psd:fit-page", "500x")

    mw.ReadImage("test.pdf")
    mw.ResizeImage(500, 500, imagick.FILTER_POINT, 1)
    mw.SetIteratorIndex(0) // This being the page offset
    mw.SetImageFormat("png")
    mw.WriteImage("test.png")
}

Меня смутили плотность , размер изображения , разрешение изображения и размер холста Полагаю.Как это предполагается использовать?

1 Ответ

0 голосов
/ 31 января 2019

В вашей GO-версии команды convert отсутствует аргумент "плотность".Замена вызова на SetImageResolution с одного на SetOption и использование фильтра для сглаживания краев приводит к сглаживанию изображения:

package main

import "gopkg.in/gographics/imagick.v2/imagick"

func main() {
    imagick.Initialize()
    defer imagick.Terminate()
    mw := imagick.NewMagickWand()
    defer mw.Destroy()

    mw.SetOption("density", "5000")
    mw.SetOption("psd:fit-page", "500x")

    mw.ReadImage("test.pdf")

    mw.ResizeImage(500, 500, imagick.FILTER_LAGRANGE, 1)
    mw.SetIteratorIndex(0) // This being the page offset
    mw.SetImageFormat("png")
    mw.WriteImage("test.png")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...