Tikz - Text in einem Bild hervorheben

Tikz - Text in einem Bild hervorheben

Wie kann ich mit Tikz Text in einem Bild hervorheben, indem ich ein Rechteck verwende und den Rest der Seite mit einem Grauton (oder einem undurchsichtigen Schwarzton) ausfülle? Siehe Beispiel unten (entnommen ausHier)?

Bildbeschreibung hier eingeben

Sie können einen Screenshot aus GIMP sehen, in dem ich Text einfach mit dem Rechteckauswahlwerkzeug markiere. Wie kann ich mit Tikz in Xetex einen ähnlichen Effekt erzielen (ohne die gelben gestrichelten Linien an den Rändern)?

Mein Code, den ich bisher habe, ist:

\begin{tikzpicture}[remember picture, overlay]
        \node [anchor=south west,inner sep=0] (A) at (0,0) {\includegraphics[width=\linewidth, height=\paperheight]{image}}{};
        \fill [draw=none, fill=black, fill opacity=0.3]
        (0,0) -- 
        (A.north west) -- (A.north east) -- (A.south east) -- 
        (0,0) -- (0,0) -- cycle;
        \filldraw [fill=white, draw=white, fill opacity=.3] (3.2,3.2) rectangle (14.6,10.5);
    \end{tikzpicture}

Das Problem, das ich bei diesem Code habe, besteht darin, dass das Füllen der gesamten Seite mit undurchsichtigem Schwarz und das Füllen des Rechtecks ​​mit undurchsichtigem Weiß zu einem undurchsichtigen Grau führt.

Antwort1

Hier ist ein Rezept und eine Anwendung. Zuerst das Rezept mitdiese Antwort.

  1. Fügen Sie oben ein Gitter hinzu.
  2. Zeichnen Sie die Kontur, die Sie hervorheben möchten.
  3. Verwenden Sie die Kontur in einer even odd ruleFüllung (und löschen Sie das Raster).

Ich habe absichtlich ein Dokument verwendet, in dem Sie möglicherweise keine horizontale Box verwenden möchten.

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\foreach \X in {0,1,2}
{\begin{tikzpicture}
    \node[anchor=south west,inner sep=0] (image) at (0,0) 
    {\includegraphics[width=0.9\textwidth]{Dunlap_broadside_copy_of_the_United_States_Declaration_of_Independence,_LOC.jpg}};
    % ^^^ https://upload.wikimedia.org/wikipedia/commons/4/4e/Dunlap_broadside_copy_of_the_United_States_Declaration_of_Independence%2C_LOC.jpg
    \begin{scope}[x={(image.south east)},y={(image.north west)}]
      \path[use as bounding box] (-0.1,-0.1) rectangle (1,1);
       % ^^^ only for animation
      \ifnum\X<2
        \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}; }
      \fi   
      \ifnum\X=1    
        \draw (0.11,0.4) -- (0.37,0.404) --  (0.37,0.414) -- (0.11,0.41) -- cycle;
      \fi
      \ifnum\X=2
        \fill[even odd rule,opacity=0.4]
        (0.11,0.4) -- (0.37,0.404) --  (0.37,0.414) -- (0.11,0.41) -- cycle
        (0,0) rectangle (1,1);
      \fi       
    \end{scope} 
\end{tikzpicture}}
\end{document}

Bildbeschreibung hier eingeben

Natürlich lässt man am Ende all den zusätzlichen Kram weg, um zu kommen

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\begin{tikzpicture}
    \node[anchor=south west,inner sep=0] (image) at (0,0) 
    {\includegraphics[width=0.9\textwidth]{Dunlap_broadside_copy_of_the_United_States_Declaration_of_Independence,_LOC.jpg}};
    % ^^^ https://upload.wikimedia.org/wikipedia/commons/4/4e/Dunlap_broadside_copy_of_the_United_States_Declaration_of_Independence%2C_LOC.jpg
    \begin{scope}[x={(image.south east)},y={(image.north west)}]
        \fill[even odd rule,opacity=0.4]
        (0.11,0.4) -- (0.37,0.404) --  (0.37,0.414) -- (0.11,0.41) -- cycle
        (0,0) rectangle (1,1);
    \end{scope} 
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Ob meine Wahl des hervorgehobenen Textes etwas mit einer Mauer an der Grenze zu Mexiko zu tun hat, möchte ich hier nicht näher erläutern.

Antwort2

Abhängig vom Format der Bilder ist Folgendes nicht tikzerforderlich:

\documentclass{article}
\usepackage{graphicx,stackengine,trimclip}
\begin{document}
\stackinset{l}{150pt}{b}{130pt}{%
  \clipbox{150pt 130pt 100pt 50pt}{\includegraphics{example-image.jpg}}%
}{%
  \includegraphics[decodearray={.3 .5 .3 .5 .3 .5}]{example-image.jpg}%
}
\end{document}

Bildbeschreibung hier eingeben

Abhängig von der Farbpalette decodearraymüssen möglicherweise folgende Anpassungen vorgenommen werden:

\documentclass{article}
\usepackage{graphicx,stackengine,trimclip}
\begin{document}
\stackinset{l}{20pt}{b}{40pt}{%
  \clipbox{20pt 40pt 15pt 15pt}{\includegraphics{example-grid-100x100bp.png}}%
}{%
  \includegraphics[decodearray={.3 .6 .3 .6 .3 .6}]{example-grid-100x100bp.jpg}%
}
\end{document}

decodearrayfunktioniert nicht für cmykFarbschemata und nur für eine begrenzte Anzahl von Bildformaten (JPEG ist eines davon).

Bildbeschreibung hier eingeben

verwandte Informationen