How to save a figure produced by tikz save/export as JPG/PNG file
First of all, make sure you have installed ImageMagick as the following code uses ImageMagick's convert
command.
Once you have had a PDF output, you need to convert it to PNG by using the following batch file named pdf2png.bat
. It is convenient to register the batch path to the system variable.
rem pdf2png.bat
echo off
rem %1 PDF filename without extension
rem %2 density
rem %3 alpha, choose one of {on,off,remove}
del "%~1-*.png"
convert -compose copy -bordercolor red -border 3x3 -density %2 -alpha %3 "%~1.pdf" "%~1-%%02d.png"
Notes:
%1
is the first mandatory argument that specifies the filename (without extension) of your PDF to convert.%2
is the second mandatory argument that specifies the density. The higher density makes the PNG dimension larger.%3
is the third mandatory argument that specifies whether or not you preserve the transparency. Useon
if you want to preserve the transparency, otherwise chooseremove
. I don't useoff
because it produces a lousy output.- I added an additional feature such that the output will be enclosed by a red rectangle. If you don't like this feature, remove
-compose copy -bordercolor red -border 3x3
from the code above.
Exercise
It is just an example. Your scenario in which you get a PDF might be different from mine. My scenario is as follows: compile the following input file with latex->dvips->ps2pdf
to get a PDF output.
% myfilename.tex
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl}
\addtopsstyle{gridstyle}{gridlabels=0}
\begin{document}
\begin{pspicture}[showgrid](4,3)
\pstGeonode[
PointName=none,
PointSymbol={x,none,x},
dotscale=2]
(0,0){A}
(1,3){B}
(4,1){C}
\psline(A)(B)(C)
\end{pspicture}
\end{document}
You can invoke the batch from the editor of your choice, but here I invoke the batch from the DOS prompt:
The output is:
The red rectangle is the border produced by -compose copy -bordercolor red -border 3x3
.
Attention!
For Windows users, the convert
alone no longer works. Instead it must be preceded by both magick
and a space because convert
has a special meaning in Windows.
Acrobat Reader allows for saving a PDF as JPG. Just compile each LaTeX file. Open them in Acrobat and Save As JPG.
You can automate the process by modifying the externalisation command as in https://tex.stackexchange.com/a/22161 or https://tex.stackexchange.com/a/40795
Here is what I personally would use:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[mode=list and make]
\tikzset{
png export/.style={
% First we call ImageMagick; change settings to requirements
external/system call/.add={}{; convert -density 300 -transparent white "\image.pdf" "\image.png"},
% Now we force the PNG figure to be used instead of the PDF
/pgf/images/external info,
/pgf/images/include external/.code={
\includegraphics[width=\pgfexternalwidth,height=\pgfexternalheight]{##1.png}
},
}
}
\begin{document}
{
% Here we specify the figure will be converted and inserted as PNG
\tikzset{png export}
\begin{tikzpicture}
\draw (0,0) circle (1) ;
\end{tikzpicture}
}
% This figure will be inserted as PDF
\begin{tikzpicture}
\draw (0,0) circle (1) ;
\end{tikzpicture}
\end{document}
Because It allows me to convert only the figures that I want to convert. See the first link if you need the conversion to be done for all figures.