2013-05-16 1 views
2

Im пытаясь создать миниатюру из JPG изображения с помощью PythonMagick:Набор проб алго

img.quality(90) 
# TODO set the sampling algo e.g. bilinear 
img.sample(Geometry(scaledWid, scaledHei)) 
img.crop(Geometry(THUMBNAIL_WID-1, THUMBNAIL_HEI-1,cropLeft, cropTop)) 
img.write(destFilePath) 

Как установить Algo выборки, которые будут использоваться? Я считаю, что сейчас он использует ближайшего соседа, который выглядит некрасиво.

ответ

0

Фильтр изменения размера устанавливается через свойство на изображении, установленном перед вызовом .resize() или, я полагаю, .sample().

Имущество является .filterType() и установлено из одного из перечисленных значений на PythonMagick.FilterTypes - это тот же список, что и у Magick++ FilterTypes.

(NB. Там никогда нет никакой документации для PythonMagick, но это по сути просто оболочкой для Magick++, просто использовать API documentation для этого.)

Так что попробуйте (непроверенные, я не использую Python):

img.quality(90) 

img.filterType(PythonMagick.FilterTypes.SincFilter) 
img.sample(Geometry(scaledWid, scaledHei)) 

img.crop(Geometry(THUMBNAIL_WID-1, THUMBNAIL_HEI-1,cropLeft, cropTop)) 

img.write(destFilePath) 

Примечание фильтра по умолчанию, как правило, LanczosFilter или, по крайней мере, он должен быть, который довольно хорошо.