想像一下,您有很多像這樣的物體的略有不同的圖像,所有這些圖像都是從相同的距離拍攝的,並且該物體僅繞其中心旋轉(因此,在所有圖片上,化石將同樣大) :
現在,您還需要在照片的兩側放置一個虛擬標尺。但這個物體有多大呢?
幸運的是,您還拍攝了一張具有真實尺寸的圖像,懸掛起來,以便將物體切成兩半(但在它旁邊)......(也是從完全相同的距離,因此物體同樣大):
現在,您需要在所有影像上放置一個虛擬標尺,如下所示:
請注意,您首先必須均勻縮放所有照片(在 LaTeX 中),直到您覺得它們都足夠大(如本文頂部的 GIF 所示)。
可以這樣載入圖片:
\foreach \i in {1,...,16}{
\begin{figure}
\hspace{0cm}
\vspace{0cm}
\centerline{
\includegraphics[scale=0.1, angle=9,origin=c]{./SourcePictures/Fossil\i.jpg}
}
\end{figure}
}
一旦比例確定,我們就需要計算出圖像有多大(以現實生活中的公分為單位)。然後能夠調整虛擬標尺,使其比例正確。
對於上面描述的虛擬比例,我使用了\fgruler{左上}但我找不到擴展它的方法。我剛剛發現這個帖子:軸,實際比例,這也許描述了更好的方法?或者我們應該調整頁面的大小,以匹配照片的真實厘米數?
關於如何為此創建一個簡潔的工作流程有什麼建議嗎?
在這種情況下,我採取了:
- 1 張有尺寸的圖片
- 16張躺下旋轉圖(第1組)
- 16張直立旋轉圖(第2套)
請注意,組 1 和組 2 應稍微垂直移動。
以下是第 1 組圖片的範例:
以下是第二組圖片的範例:
答案1
我猜你想要類似或類似的東西:
以下解決方案使用 TikZ 和 TikZ-calc。
A。第一步,我將圖像放入節點中。
b.然後我添加一個簡單的該節點的座標系。
C。在範圍環境的幫助下,我可以將任何 TikZ 內容新增到座標系內的圖像中。
d1。提示:我cmHgI.jpg
在這裡使用startpost;對於沒有cmHgI.jpg
它的用戶將會出現example-image.jpg
d2。 線索是測量標尺的“單位長度”,如所有繪製的 TikZ 標尺所示,cmHgI.jpg
並將其用於所有繪製的 TikZ 標尺。
€dit:我加了一把鑰匙\def\ShowHelps{1} % 1 'yes' 0 'no'
沒有幫助的東西:
\documentclass[a4paper, landscape]{article}
\usepackage[margin=2cm, showframe=false]{geometry}
\usepackage{mwe} % Dummy images
\usepackage{tikz}
\usetikzlibrary{calc}
\pgfkeys{/tikz/savevalue/.code 2 args={\global\edef#1{#2}}}
\def\ShowHelps{1} % 1 'yes' 0 'no'
\begin{document}
\centering\begin{tikzpicture}[font=\sffamily,
Help/.style={font=\Huge, red}
]
\node[anchor=south west,inner sep=0pt] (myimage) at (0,0) {
\IfFileExists{cmHgI.jpg}
{\includegraphics[scale=0.15]{cmHgI.jpg}}
{\includegraphics[width=0.75\textwidth]{example-image.jpg}}
};
\begin{scope}[x={(myimage.south east)},y={(myimage.north west)}]
% Restrict the draw area
\clip (0,0) rectangle (1,1);
% Frame around image - optional
\draw[] (0,0) rectangle (1,1); % optional
% CoSy inside node
\newcommand\ShowHelpCoSy{
\draw[help lines,xstep=.1,ystep=.1] (0,0) grid (1,1);
\foreach \x in {0,1,...,9} { \node[anchor=north] at (\x/10,0) {0.\x}; }
\foreach \y in {0,1,...,9} { \node[anchor=east] at (0,\y/10) {0.\y}; }
}
\ifnum\ShowHelps=1 \ShowHelpCoSy \fi%
\ifnum\ShowHelps=1\fill[Help] (0.5,0.75) circle(3pt) node[above]{(0.5,0.75)};\fi% <-- Position Test
% Now the stuff:
\path[] (0.705,0.4) coordinate(U1) -- (0.705,0.519) coordinate(U2);
\ifnum\ShowHelps=1 \draw[Help] (U1) circle(2pt) node[label=left:U1]{} -- (U2) circle(2pt) node[label=left:U2]{};\fi % show unitlength line
\path let \p1=($(U2)-(U1)$) in
\pgfextra{ \pgfmathsetlengthmacro{\unitlength}{veclen(\x1,\y1)} }
[savevalue={\u}{\unitlength}];
\ifnum\ShowHelps=1 \node[Help] at (0.725,0.25) {unitlength U1U2 = \u}; \fi%<--- show unitlength
\ifnum\ShowHelps=1 \draw[blue, transform canvas={xshift=2mm}] (U1) -- +(0,\u);\fi % Test
% Small Ruler
\draw[very thick] (0.3,0.35) coordinate(A) -- +(0,3*\u);
\foreach \n in {0,1,...,3}{%%
\draw[very thick] ([yshift=\n*\u]A) -- +(-3mm,0) node[left]{\n}
\ifnum\n=0 node[anchor=west, right=3mm]{cm}\fi;
}%%
\foreach \n in {0.1,0.2,...,3}{%%
\draw[] ([yshift=\n*\u]A) -- +(-1.5mm,0);
}%%
% Image Ruler y
\draw[very thick] (0,0) coordinate(B) -- +(0,10*\u);
\foreach \n in {0,1,...,10}{%%
\draw[very thick] ([yshift=\n*\u]B) -- +(3mm,0) node[right]{
\ifnum\n=0 \else \ifnum\n=1 \n\,cm \else \n \fi\fi};
}%%
\foreach \n in {0.1,0.2,...,10}{%%
\draw[] ([yshift=\n*\u]B) -- +(1.5mm,0);
}%%
% Image Ruler x
\draw[very thick] (0,1) coordinate(C) -- (15*\u,1);
\foreach \n in {0,1,...,15}{%%
\pgfmathsetmacro\Color{\n<9 ? "black" : "white"}
\draw[very thick, \Color] ([xshift=\n*\u]C) -- +(0,-3mm) node[below, text=\Color, inner sep=1pt]{
\ifnum\n=0 \else \ifnum\n=1 \n\,cm \else \n \fi\fi};
}%%
\foreach \n in {0.1,0.2,...,15}{%%
\pgfmathsetmacro\Color{\n<9 ? "black" : "white"}
\draw[\Color] ([xshift=\n*\u]C) -- +(0,-1.5mm);
}%%
\end{scope}
\end{tikzpicture}
\end{document}
答案2
目前,我正在透過以下程式碼進行縮放和裁剪:
\documentclass{article}
\usepackage{geometry}
\geometry{paperwidth=10cm, paperheight=10cm, margin=0cm}
\usepackage{graphicx}
\usepackage{pgffor}
\pagenumbering{gobble}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\ScaleImages}{0.6}
\newcommand{\DisplaceHorizontallySetA}{-18cm}
\newcommand{\DisplaceVerticallySetA}{-1.03cm}
\newcommand{\DisplaceHorizontallySetB}{0.5cm}
\newcommand{\DisplaceVerticallySetB}{-4.5cm}
\newcommand{\DisplaceHorizontallySetC}{0.5cm}
\newcommand{\DisplaceVerticallySetC}{-3cm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\foreach \i in {0,...,0}{ %%%% First picture
\begin{figure}
\hspace{\DisplaceHorizontallySetA}
\vspace{\DisplaceVerticallySetA}\\
\centerline{ \hspace{\DisplaceHorizontallySetA}
\includegraphics[scale=\ScaleImages, angle=0.7]{./Pictures/2020-08_Object-1_(51-208North_4-383South)_Picture-\i.jpg}
}
\end{figure}
}
\paperwidth=15cm
\foreach \i in {1,...,16}{ %%%% First rotation (picture 1 until 16)
\begin{figure}
\hspace{\DisplaceHorizontallySetB}
\vspace{\DisplaceVerticallySetB}\\
\centerline{
\hspace{\DisplaceHorizontallySetB}
\includegraphics[scale=\ScaleImages]{./Pictures/2020-08_Object-1_(51-208North_4-383South)_Picture-\i.jpg}
}
\end{figure}
}
\foreach \i in {17,...,32}{ %%%% Second rotation (picture 17 until 32)
\begin{figure}
\hspace{\DisplaceHorizontallySetC}
\vspace{\DisplaceVerticallySetC}\\
\centerline{
\hspace{\DisplaceHorizontallySetC}
\includegraphics[scale=\ScaleImages]{./Pictures/2020-08_Object-1_(51-208North_4-383South)_Picture-\i.jpg}
}
\end{figure}
}
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
它會產生一個 .PDF 文件:
然後,我使用以下終端命令列將它們轉換為 .PNG:
convert -density 400 CropperXYZ.pdf CroppedXYZ.png
因為我們將第一張圖像與物理標尺很好地對齊,所以我們現在可以知道正方形的實際大小。
現在仍然是覆蓋虛擬標尺的部分。