Here is a flexible and customizable solution usable into a tikzpicture.
Description of keys:
at
defines the center of the picture,
graphics options
defines the options used by \includegraphics
,
rotate
defines the global rotation of the polaroid,
caption
define the content of the caption,
caption distance
defines the distance between the top of caption and the bottom of the picture,
top margin
, bottom margin
, left margin
, right margin
, vmargin
, hmargin
and margin
are used to define the margins between the picture and the borders of the polaroid,
caption option
defines the options used by the caption node,
frame options
defines the options used by the frame node (the whole polaroid).
Each key has a default value. The optional argument of \polaroid
macro is used to change these value for a particular polaroid. You may use \polaroidset
to change the default values for all subsequent polaroids in the current group.


\documentclass[tikz]{standalone}%
\usetikzlibrary{fit,calc,shadows,backgrounds,positioning}
\tikzset{
polaroid/.cd,
at/.store in=\polaroidat,
at={0,0},
graphics options/.store in=\polaroidgraphicsoptions,
graphics options=,
rotate/.store in=\polaroidrotate,
rotate=0,
caption/.store in=\polaroidcaption,
caption=,
caption distance/.store in=\polaroidcaptiondistance,
caption distance=1mm,
top margin/.store in=\polaroidtopmargin,
bottom margin/.store in=\polaroidbottommargin,
left margin/.store in=\polaroidleftmargin,
right margin/.store in=\polaroidrightmargin,
vmargin/.style={top margin=#1,bottom margin=#1},
hmargin/.style={left margin=#1,right margin=#1},
margin/.style={vmargin=#1,hmargin=#1},
margin=1cm,
caption default/.style={font=\bfseries,node distance=1mm},
caption options/.style={caption default/.append style={#1}},
frame default/.style={draw,inner sep=0},
frame options/.style={frame default/.append style={#1}},
}
\newcommand\polaroidset[1]{\tikzset{polaroid/.cd,#1}}
\newcommand\polaroid[2][]{
\bgroup
\tikzset{polaroid/.cd,#1}
\pgfmathsetmacro\polaroidrotate{\polaroidrotate}
\begin{scope}[shift={(\polaroidat)},rotate=\polaroidrotate]
\node[rotate=\polaroidrotate,inner sep=0]
(shoot) {\expandafter\includegraphics\expandafter[\polaroidgraphicsoptions]{#2}};
\path (shoot.north) ++(0,\polaroidtopmargin) coordinate (polaroid top);
\path (shoot.south) ++(0,{-1*(\polaroidbottommargin)}) coordinate (polaroid bottom);
\path (shoot.west) ++({-1*(\polaroidleftmargin)},0) coordinate (polaroid left);
\path (shoot.east) ++(\polaroidrightmargin,0) coordinate (polaroid right);
\node[rotate fit=\polaroidrotate,fit=(polaroid top)(polaroid bottom)(polaroid left)(polaroid right),polaroid/frame default]{};
\node[rotate=\polaroidrotate,inner sep=0]
(shoot) {\expandafter\includegraphics\expandafter[\polaroidgraphicsoptions]{#2}};
\coordinate (caption center) at ($(shoot.south)!-1 * \polaroidcaptiondistance!(shoot.north)$);
\node[anchor=north,rotate=\polaroidrotate,polaroid/caption default]
(caption) at (caption center) {\polaroidcaption};
\end{scope}
\egroup
}
\begin{document}%
\begin{tikzpicture}
\polaroid[rotate=-10,
frame options={line width=1pt,draw,rounded corners=.5mm,fill=white,drop shadow},
graphics options={width=4cm}]
{face}
\end{tikzpicture}
\begin{tikzpicture}
\polaroidset{
rotate=20,
frame options={line width=1pt,draw=cyan,rounded corners=.5mm,fill=cyan!10,drop shadow},
graphics options={width=2.5cm},
caption options={font=\footnotesize,align=center},
caption distance=.5mm,
vmargin=5mm,hmargin=5mm,
bottom margin=5mm+1em,
}
\foreach \i in {0,...,6}{
\polaroid[rotate={90-\i*30},at={{90-\i*30+90}:5cm},caption=Hello\\World]{face}
}
\end{tikzpicture}
\end{document}