Zmiana rozmiaru obrazu w Markdown


920

Właśnie zacząłem z Markdown. Uwielbiam to, ale jedno mnie denerwuje: jak mogę zmienić rozmiar obrazu za pomocą Markdown?

Dokumentacja zawiera tylko następujące sugestie dotyczące obrazu:

![drawing](drawing.jpg)

Jeśli to możliwe, chciałbym, aby zdjęcie również było wyśrodkowane. Proszę o ogólny Markdown, a nie tylko o to, jak GitHub to robi.


11
Sugeruję zmianę przyjętej odpowiedzi na kod, który jest kompatybilny z większością interpreterów przecen (tym razem, moim zdaniem, stackoverflow.com/a/21972032/463225 ).
WattsInABox,


Microsoft ma na swojej stronie notatkę dotyczącą składni Markdown:! Składnia do obsługi zmiany rozmiaru obrazu jest obsługiwana tylko w żądaniach ściągania i Wiki. docs.microsoft.com/en-us/vsts/project/wiki/... Nie jestem pewien, czy ten komentarz składniowy jest poprawny dla wszystkich przecen, czy tylko dla VSTS.
Joe B,

Odpowiedzi:


501

W przypadku niektórych implementacji Markdown (w tym Mou i Marked 2 (tylko macOS)) możesz dołączyć =WIDTHxHEIGHTpo adresie URL pliku graficznego, aby zmienić rozmiar obrazu. Nie zapomnij o przestrzeni przed =.

![](./pic/pic1_50.png =100x20)

Możesz pominąć WYSOKOŚĆ

![](./pic/pic1s.png =250x)

22
Zauważ też, że po „=” nie możesz mieć spacji. dobrze: "! [] (./ pic / pic1s.png = 250x)", źle: "! [] (./ pic / pic1s.png = 250x)"
można

17
Nie jest w standardzie, więc nie działa z każdym parserem Markdown
Marius Soutier

19
Wydaje się, że nie działa z Redcarpet, którego używam z Jekyll, więc wybrałbym HTML, jak odpowiedział @Tieme. Jeśli w końcu uruchomisz Markdown za pomocą parsera, który lubi ten standard, HTML wstanie.
user766353

7
nie działa również na wiki Bitbucket. jest niepoprawnie przekonwertowany na titleatrybut.
RZKY

6
Nie działa, ale HTML <img src = http // ... width = "..." height = "..."> działa.
BK Batchelor

979

Możesz po prostu użyć HTMLa w swoim Markdown:

<img src="drawing.jpg" alt="drawing" width="200"/>

Lub poprzez styleatrybut ( nie obsługiwany przez GitHub )

<img src="drawing.jpg" alt="drawing" style="width:200px;"/>

Lub możesz użyć niestandardowego pliku CSS, jak opisano w tej odpowiedzi na temat Markdown i wyrównania obrazu

![drawing](drawing.jpg)

CSS w innym pliku:

img[alt=drawing] { width: 200px; }

42
Korzystanie z funkcji inline stylenie działa w większości witryn (np. GitHub), ale zostanie odkażone. Wolę widthi heightzamiast tego, jak wspomniano przez @kushdillip.
Ciro Santilli 22 病毒 审查 六四 事件 法轮功

2
Rozwiązanie oparte na atrybucie alt jest bardzo złe i nie powinieneś go używać, ponieważ psuje dostępność .
Regnareb

Alt w znaczniku wstawia podpis, alt w html robi coś zupełnie innego (wstaw tekst, jeśli nie można załadować figury).
Julien Colomb

Działa na Github z atrybutem width.
Shital Shah

Umieszczałem obraz w tabeli i lepiej było go użyć, max-widthaby upewnić się, że obrazy nie są spłaszczone
kashiraja

324

Przyjęta tutaj odpowiedź nie działa z żadnym edytorem Markdown dostępnym w aplikacjach, z których korzystałem do tej pory, takich jak Ghost, Stackedit.io, a nawet w edytorze przepełnienia stosu. Znalazłem obejście tutaj w narzędziu do śledzenia problemów StackEdit.io .

Rozwiązaniem jest bezpośrednie użycie składni HTML i działa idealnie:

<img src="http://....jpg" width="200" height="200" />

Mam nadzieję, że to pomoże.


11
To zadziałało dla mnie świetnie! Inline CSS nie działa z GitHub Markdown, ale atrybuty wysokości / szerokości „starej szkoły” działały dobrze.
Nicholas Kreidberg,

Dobrą rzeczą jest to, że ta działa również, jeśli próbujesz użyć przeglądarki Markdown dla lokalnych plików w rozszerzeniu / dodatku przeglądarki.
code_dredd

1
Github lubi to.
Teoman Shipahi

1
ty rock man! teraz to działa dla mnie
Wesin Alves

Jest to świetne, z wyjątkiem nie w moich notatnikach ipython w github.
Eric

129

Po prostu użyj:

<img src="Assets/icon.png" width="200">

zamiast:

![](Assets/icon.png)

1
Większość implementacji Markdown ma do tego zmodyfikowaną składnię, więc nie trzeba wstawiać surowego znacznika HTML, ale jest to słuszne, jeśli implementacja, której używasz, nie ma takiej.
Nick McCurdy,

1
cholerny geniusz! pracuje dla GitHub =)))
Victor R. Oliveira

Jest to kompatybilne z github
thanos.a

Dziękujemy za uproszczenie i zmianę oczywistą.
Marcy

67

Jeśli piszesz MarkDown dla PanDoc, możesz to zrobić:

![drawing](drawing.jpg){ width=50% }

To dodaje style="width: 50%;"do HTML <img>tagu, lub [width=0.5\textwidth]do\includegraphics w LaTeX.

Źródło: http://pandoc.org/MANUAL.html#extension-link_attributes


1
Jest to nawet przyjemniejsze niż bezpośrednie określenie rozmiaru w punktach. Cieszę się, że takie podejście wybrał Pandoc!
jciloa

2
@ m0z4rt GitHub prawdopodobnie nie używa PanDoc do renderowania MarkDown.
rudolfbyker

63

Może to się ostatnio zmieniło, ale dokumenty Kramdown pokazują proste rozwiązanie.

Z dokumentów

Here is an inline ![smiley](smiley.png){:height="36px" width="36px"}.

And here is a referenced ![smile]

[smile]: smile.png
{: height="36px" width="36px"}

Działa na github z Jekyll i Kramdown.


7
Może pracował w przeszłości, ale nie działa teraz w Github. Dodanie staromodnego znacznika <img> o szerokości i wysokości nadal działa.
piratemurray,

2
To najlepsze rozwiązanie, jeśli używasz Kramdown lub Jekyll (który domyślnie używa Kramdown).
Nick McCurdy,

2
Pokazane tutaj atrybuty bloków są dobrą opcją w Kramdown. Składnia tutaj jest nieco niepoprawna, co może być przyczyną problemów z @piratemurray. Powinno być {: height=36 width=36}; generuje to atrybuty HTML, więc nie powinien mieć pxsufiksu. Alternatywnie możesz użyć css z {: style="height:36px; width:36px"}.
Quantum7

Działa dla jekyll! dzięki. Nie potrzebuję nawet wysokości i szerokości, wystarczy jeden. ![alt text](image.png){:height="36px" }
Matthias,

1
Musiałem dokonać niewielkiej zmiany, aby działała poprawnie w Jekyll. Ta odpowiedź w formie pisemnej generuje zniekształcony kod HTML, ponieważ atrybuty widthi heightobejmują część „px”. Dla mnie musiałem użyć{:height="36" width="36"}
Maximillian Laumeister

23

Można skorzystać z altatrybutu, który można ustawić w prawie wszystkich implementacjach / rendererach Markdown razem z selektorami CSS opartymi na wartościach atrybutów. Zaletą jest to, że można łatwo zdefiniować cały zestaw różnych rozmiarów obrazu (i dalsze atrybuty).

Obniżka cen:

![minipic](mypic.jpg)

CSS:

img[alt="minipic"] { 
  max-width:  20px; 
  display: block;
}


13
Jest to niewłaściwe użycie atrybutu alt i szkodzi dostępności.
sbuck

2
Tak, to hack ALE wciąż wydaje się być jedyną rzeczą, która działa w różnych smakach Markdown. +1 za wskazanie tego (osoby korzystające z czytników ekranu mają z tym problem? Czy dostaną również problemy z tymi, którzy nie zawracają sobie głowy korzystaniem z alt we właściwy sposób).
petermeissner

20

wymienić ![title](image-url.type)z<img src="https://image-url.type" width="200" height="200">


17

Jeśli używasz Kramdown , możesz to zrobić:

{:.foo}
![drawing](drawing.jpg)

Następnie dodaj to do swojego niestandardowego CSS :

.foo {
  text-align: center;
  width: 100px;
}

3
Odradzałbym ustawianie szerokości tylko w CSS. Przydatne jest poinformowanie przeglądarki, jak duży będzie element obrazu przed załadowaniem obrazu i arkusza stylów, aby mógł zoptymalizować układ elementów wokół obrazu bez ponownego wlewania.
Nick McCurdy,

13

Opierając się na odpowiedzi Tiemes, jeśli używasz CSS 3 , możesz użyć selektora podciągów :

Ten selektor dopasuje dowolny obraz ze znacznikiem alt, który kończy się na „-fullwidth”:

img[alt$="-fullwidth"]{
  width:  100%;
  display: block;
}

Następnie możesz nadal używać tagu alt zgodnie z jego przeznaczeniem do opisywania obrazu.

Markdown dla powyższego może wyglądać następująco:

![Picture of the Beach -fullwidth](beach.jpg)

Używałem tego w Markdown i działa dobrze.


1
Działa doskonale również na kramdown + jekyll-3.1.2.
Subin Sebastian,

Jeśli nie musisz renderować obrazu na pełnej szerokości, lepiej umieścić rozmiar piksela bezpośrednio na znaczniku (nie w CSS).
Nick McCurdy,

12

Łącząc dwie odpowiedzi, znalazłem rozwiązanie, które może nie wygląda tak ładnie,
ale działa!

Tworzy miniaturę o określonym rozmiarze, który można kliknąć, aby wyświetlić obraz o maksymalnej rozdzielczości.

[<img src="image.png" width="250"/>](image.png)

Oto przykład! Przetestowałem to na Visual Code i Github. Przykładowa przecena


1
Świetny. Współpracuje z GitLab Enterprise.
Sven Haile

10

Przybyłem tutaj, szukając odpowiedzi. Kilka niesamowitych sugestii tutaj. A złote informacje wskazujące, że przecena całkowicie obsługuje HTMl!

Na pewno dobrym, czystym rozwiązaniem jest zawsze stosowanie czystej składni HTML. Z tagiem.

Ale starałem się nadal trzymać składni Markdown, więc próbowałem owijać ją wokół tagu i dodawać dowolne atrybuty, które chciałem dla obrazu wewnątrz tagu div. I DZIAŁA !!

<div style="width:50%">![Chilling](https://www.w3schools.com/w3images/fjords.jpg)</div>

W ten sposób obsługiwane są obrazy zewnętrzne!

Pomyślałem, że opublikuję to, ponieważ nie ma na to żadnej odpowiedzi. :)


1
Nie można umieścić wewnątrz markdown HTML, trzeba będzie wymienić ![chilling](link)z <img src="link" alt="chilling">.
Charl Kruger,

10

Dla tych, którzy są nastawieni na rozwiązanie rmarkdowni knitr. Istnieje kilka sposobów zmiany rozmiaru obrazów w .rmdpliku bez użycia html:

Możesz po prostu określić szerokość obrazu, dodając {width=123px}. Nie wprowadzaj spacji między nawiasami:

![image description]('your-image.png'){width=250px}

Inną opcją jest użycie knitr::include_graphics:

```{r, fig.cap="image description", out.width = '50%'}
knitr::include_graphics('your-image.png')
```

2
Jak mogę zmienić wysokość i szerokość? W szczególności dla pierwszej opcji. Próbowałem umieścić wysokość i szerokość w tym samym, {}ale nie udało się. Oddzielne {}s też zawodzą.
NelsonGon,

2
@NelsonGon: Nigdy nie musiałem określać obu, ponieważ wysokość jest skalowana, gdy szerokość jest określona. Dlatego nie wiem, czy byłoby to możliwe i jak to osiągnąć. Dobre pytanie…
symbolrush

2
Dzięki, ponieważ zorientowali mogę zrobić to tak: {height=x width=y}. Wygląda na to, że ta składnia nie rozpoznaje przecinków, ale mógłbym określić inne atrybuty, w tym elementy stylu.
NelsonGon,


9

Wiem, że ta odpowiedź jest nieco konkretna, ale może pomóc innym w potrzebie.

Ponieważ wiele zdjęć jest przesyłanych za pomocą usługi Imgur , możesz użyć interfejsu API opisanego tutaj aby zmienić rozmiar zdjęcia.

Gdy prześlesz zdjęcie w komentarzu do GitHub, zostanie ono dodane przez Imgur, więc to bardzo pomoże, jeśli zdjęcie jest bardzo duże.

Zasadniczo zamiast http://i.imgur.com/12345.jpg , dla średnich rozmiarów należy umieścić http://i.imgur.com/12345m.jpg .


7

Możesz również użyć tego z Kramdown:

markdown
![drawing](drawing.jpg)   
{:.some-css-class style="width: 200px"}

lub

markdown
![drawing](drawing.jpg)   
{:.some-css-class width="200"}

W ten sposób możesz bezpośrednio dodawać dowolne atrybuty do ostatniego elementu HTML. Aby dodać klasy, istnieje skrót .class.secondclass .


5

Ten działa dla mnie, nie ma go w jednej linii, ale mam nadzieję, że zadziała dla ciebie.

<div>
<img src="attachment:image.png" width="500" height="300"/>
</div>

To HTML, a nie Markdown ...
MappaM

4

W przypadku R-Markdown żadne z powyższych rozwiązań nie działało dla mnie, dlatego zwróciłem się do zwykłej składni LaTeX , która działa dobrze.

\begin{figure}
 \includegraphics[width=300pt, height = 125 pt]{drawing.jpg}
\end{figure}

Następnie możesz użyć np. \begin{center}Instrukcji do wyśrodkowania obrazu.


1
+1, ale lepiej zaraz \centeringpo \begin{figure}lub nic, jeśli użyjesz `\ includeegraphics [width = \ linewidth] {drawing.jpg}` myślę, że powinno to być domyślne wyjście pandoc, przynajmniej gdy obraz jest szerszy niż tekst.
Fran

4

Jest sposób na dodanie stylu klasy i css

![pic][logo]{.classname}

następnie zapisz poniżej link i css

[logo]: (picurl)

<style type="text/css">
    .classname{
        width: 200px;
    }
</style>

Odwołaj się tutaj


4

Dla wszystkich, którzy szukają rozwiązań, które działają w Markdown / bookdown R , te z poprzednich rozwiązań nie działają / nie wymagają lub wymagają niewielkiej adaptacji:

Pracujący

  • Dołącz { width=50% }lub{ width=50% height=50% }

    • ![foo](foo.png){ width=50% }
    • ![foo](foo.png){ width=50% height=50% }

    • Ważne: nie ma przecinka między szerokością a wysokością - tzn. { width=50%, height=30% } Nie zadziała !

  • Dodać { height="36px" width="36px" }

    • ![foo](foo.png){ height="36px" width="36px" }
    • Uwaga: {:height="36px" width="36px"} z dwukropkiem, począwszy od @sayth, wydaje się nie działać z markdown R.

Nie działa:

  • Dodać =WIDTHxHEIGHT
    • po adresie URL pliku graficznego, aby zmienić rozmiar obrazu (od @prosseek)
    • ani =WIDTHxHEIGHT ![foo](foo.png =100x20)też nie =WIDTHtylko ![foo](foo.png =250x)praca

3

Dodanie względnych wymiarów do źródłowego adresu URL będzie renderowane w większości rendererów Markdown.

Zaimplementowaliśmy to w Corilli, ponieważ uważam, że wzorzec jest zgodny z oczekiwaniami dotyczącymi istniejących przepływów pracy bez zmuszania użytkownika do polegania na podstawowym języku HTML. Jeśli twoje ulubione narzędzie nie ma podobnego wzoru, warto zgłosić prośbę o dodanie funkcji.

Przykład składni:

![a-kitten.jpg](//corilla.com/a-kitten-2xU3C2.jpg =200x200)

Przykład kociaka:

kotek


Szkoda, że ​​obecnie nie działa w GitHub, ale sugerowałbym jednak podniesienie żądania funkcji.
ddri

3

Zmiana rozmiaru załączników obrazu Markdown w notatniku Jupyter

Używam jupyter_core-4.4.0& jupyter notebook.

Jeśli dołączasz swoje zdjęcia, wstawiając je do znacznika w następujący sposób:

![Screen%20Shot%202019-08-06%20at%201.48.10%20PM.png](attachment:Screen%20Shot%202019-08-06%20at%201.48.10%20PM.png)

Te attachmentlinki nie działają:

<img src="attachment:Screen%20Shot%202019-08-06%20at%201.48.10%20PM.png" width="500"/>

ZRÓB TO . To robi pracę.

Wystarczy dodać nawiasy klamrowe.

<div>
<img src="attachment:Screen%20Shot%202019-08-06%20at%201.48.10%20PM.png" width="500"/>
</div>

Mam nadzieję że to pomoże!


3

Dla przyszłego odniesienia:

Implementacja Markdown dla Joplin pozwala kontrolować rozmiar importowanych obrazów w następujący sposób:

<img src=":/7653a812439451eb1803236687a70ca" width="450"/>

Funkcja ta została wezwana tutaj i jak obiecał przez Laurent ten został wdrożony.


Zajęło mi trochę czasu, aby wymyślić konkretną odpowiedź Joplin.


3

Jeśli używasz obrazów w stylu Github :

Here is an image of tree: 
![alt text][tree]{height=400px width=500px}


[//]: # (Image References)
[tree]: ./images/tree.png "This is a tree"


2

Korzystając z Flask (używam go z płaskimi stronami) ... odkryłem, że włączenie jawnie (z jakiegoś powodu domyślnie nie było) 'attr_list' w rozszerzeniach w wywołaniu markdown robi lewę - i wtedy można użyć atrybutów (bardzo przydatne również w celu uzyskania dostępu do CSS - class = "my class" na przykład ...).

FLATPAGES_HTML_RENDERER = prerender_jinja

i funkcja:

def prerender_jinja(text):
    prerendered_body = render_template_string(Markup(text))
    pygmented_body   = markdown.markdown(prerendered_body, extensions=['codehilite', 'fenced_code', 'tables', 'attr_list'])
    return pygmented_body

A potem w Markdown:

![image](https://octodex.github.com/images/yaktocat.png "This is a tooltip"){: width=200px}


1

Jeśli zmiana początkowego znacznika nie jest dla Ciebie opcją, ten hack może działać:

newHtml = oldHtml.replace(/<img/g, '<img height="100"');

Użyłem tego, aby móc zmienić rozmiar obrazów przed wysłaniem ich w wiadomości e-mail (ponieważ program Outlook ignoruje wszelkie style css obrazu)


1

Odpowiedź Tieme jest najlepsza w większości przypadków.

W moim przypadku używam pandoc do konwersji przeceny na lateks. Tagi HTML nie będą tu działać.

Moje rozwiązanie polega na ponownym wdrożeniu \includegraphics

\let\maxincludegraphics\includegraphics
\renewcommand{\includegraphics}[1]{\maxincludegraphics[max width=\textwidth]{#1}}

Jest to analogiczne do używania CSS po konwersji na HTML.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.