次のコードにより、iPythonノートブックでpng
イメージを表示できます。 pdf
イメージを表示する方法はありますか?必ずしもIPython.displayを使用する必要はありません。ファイル内のpdf画像をiPythonノートブック出力セルに印刷する方法を探しています。
## This is for an `png` image
from IPython.display import Image
fig = Image(filename=('./temp/my_plot.png'))
fig
ありがとうございました。
あなた(および他の人)が直面する問題は、PDFをブラウザに直接表示できないことです。類似したものを取得する唯一の方法は、イメージコンバーターを使用してPDFからPNGまたはJPGを作成し、これを表示することです。
これは、imagemagickおよびカスタム表示機能を介して実行できます。
簡単な解決策は、python-imagemagickバインディングであるワンド( http://docs.wand-py.org )を使用することです。 Ubuntu 13.04で試しました:
テキスト形式:
from wand.image import Image as WImage
img = WImage(filename='hat.pdf')
img
複数ページのPDFの場合、たとえば2ページ目:
img = WImage(filename='hat.pdf[1]')
最近のブラウザは、埋め込まれたpdfビューアでpdfを表示することをサポートしているため、iframeに基づく可能な代替ソリューションを次のように実装できます。
class PDF(object):
def __init__(self, pdf, size=(200,200)):
self.pdf = pdf
self.size = size
def _repr_html_(self):
return '<iframe src={0} width={1[0]} height={1[1]}></iframe>'.format(self.pdf, self.size)
def _repr_latex_(self):
return r'\includegraphics[width=1.0\textwidth]{{{0}}}'.format(self.pdf)
このクラスはhtmlおよびlatex表現を実装しているため、pdfもnbconversionをlatexに変換しても存続します。次のように使用できます
PDF('hat.pdf',size=(300,250))
Firefox 33では、これにより
Rplots.pdfと呼ばれるマルチイメージpdfを想定
以下は、jupyterノートブックセルで機能します。インストールに使用した
pip install Wand
このコードはセルに貼り付けます
from wand.image import Image
imageFromPdf = Image(filename='Rplots.pdf')
pages = len(imageFromPdf.sequence)
image = Image(
width=imageFromPdf.width,
height=imageFromPdf.height * pages
)
for i in range(pages):
image.composite(
imageFromPdf.sequence[i],
top=imageFromPdf.height * i,
left=0
)
image.format="png"
image
ImageMagickのWandバインディングを推奨するJakobの優れた答えに加えて:
PDF=ベクターグラフィックスが含まれている場合、resolution
キーワードを使用して、レンダリングイメージのサイズを制御します。ImageMagickのデフォルト値は72 dpiです。値が大きいほどピクセルが多くなります。
from wand.image import Image as WImage
img = WImage(filename='hat.pdf', resolution=100) # bigger
img