Thay đổi kích thước hình ảnh trong Markdown


920

Tôi vừa mới bắt đầu với Markdown. Tôi thích nó, nhưng có một điều làm tôi khó chịu: Làm cách nào tôi có thể thay đổi kích thước của hình ảnh bằng Markdown?

Tài liệu chỉ đưa ra gợi ý sau cho hình ảnh:

![drawing](drawing.jpg)

Nếu có thể tôi muốn hình ảnh cũng được làm trung tâm. Tôi đang yêu cầu Markdown chung, không chỉ là cách GitHub làm điều đó.


11
Tôi đề nghị thay đổi câu trả lời được chấp nhận cho mã tương thích với hầu hết các thông dịch viên đánh dấu (cái này, theo ý kiến ​​của tôi stackoverflow.com/a/21972032/463225 ).
WattsInABox


Microsoft có một ghi chú trên trang của họ cho Markdown Syntax :! Cú pháp để hỗ trợ thay đổi kích thước hình ảnh chỉ được hỗ trợ trong các yêu cầu kéo và Wiki. docs.microsoft.com/en-us/vsts/project/wiki/ mẹo Không chắc chắn liệu nhận xét cú pháp này có hợp lệ cho tất cả đánh dấu hay chỉ cho VSTS.
Joe B

Câu trả lời:


501

Với một số triển khai Markdown nhất định (bao gồm MouMarked 2 (chỉ macOS)), bạn có thể nối thêm =WIDTHxHEIGHTsau URL của tệp đồ họa để thay đổi kích thước hình ảnh. Đừng quên không gian trước =.

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

Bạn có thể bỏ qua HEIGHT

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

22
cũng lưu ý rằng bạn không thể có khoảng trắng sau dấu '='. tốt: "! [] (./ pic / pic1s.png = 250x)", xấu: "! [] (./ pic / pic1s.png = 250x)"
cantdutchthis

17
Không có trong tiêu chuẩn, do đó, nó không hoạt động với mọi trình phân tích cú pháp Markdown
Marius Soutier

19
Dường như không hoạt động với Redcarpet, mà tôi sử dụng với Jekyll, vì vậy tôi đi với HTML, như @Tieme đã trả lời. Nếu bạn kết thúc việc chạy Markdown thông qua trình phân tích cú pháp thích tiêu chuẩn, HTML sẽ đứng lên.
dùng766353

7
cũng không hoạt động trong wiki Bitbucket. nó chuyển đổi sai thành titlethuộc tính.
RZKY

6
Không hoạt động, nhưng HTML <img src = http // ... width = "..." height = "..."> hoạt động.
BK Batch Bachelor

980

Bạn chỉ có thể sử dụng một số HTML trong Markdown của mình:

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

Hoặc thông qua stylethuộc tính ( không được GitHub hỗ trợ )

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

Hoặc bạn có thể sử dụng tệp CSS tùy chỉnh như được mô tả trong câu trả lời này trên Markdown và căn chỉnh hình ảnh

![drawing](drawing.jpg)

CSS trong một tệp khác:

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

42
Sử dụng nội tuyến stylekhông hoạt động trong hầu hết các trang web (ví dụ: trang GitHub), nó sẽ được khử trùng. Thích widthheightthay vào đó như được đề cập bởi @kushdillip.
Ciro Santilli 冠状 病毒 审查 事件

2
Giải pháp dựa trên thuộc tính alt là rất tệ và bạn không nên sử dụng nó, nó phá vỡ khả năng truy cập .
Regnareb

Alt trong markdown đặt chú thích, alt trong html thực hiện một cái gì đó hoàn toàn khác (đặt văn bản nếu không thể tải hình).
Julien Colombia

Hoạt động trên Github với thuộc tính width.
Shital Shah

Tôi đã đặt một hình ảnh vào một cái bàn và nó hoạt động tốt hơn để sử dụng max-widththay vào đó để đảm bảo hình ảnh không bị
cắt xén

325

Câu trả lời được chấp nhận ở đây không hoạt động với bất kỳ trình soạn thảo Markdown nào có sẵn trong các ứng dụng tôi đã sử dụng cho đến ngày như Ghost, Stackedit.io hoặc thậm chí trong trình chỉnh sửa Stack Overflow. Tôi đã tìm thấy một cách giải quyết ở đây trong trình theo dõi vấn đề StackEdit.io .

Giải pháp là sử dụng trực tiếp cú pháp HTML và nó hoạt động hoàn hảo:

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

Tôi hi vọng cái này giúp được.


11
Nó hiệu quả tuyệt vời đối với tôi! CSS nội tuyến không hoạt động với GitHub Markdown nhưng các thuộc tính chiều cao / chiều rộng của "trường học cũ" hoạt động tốt.
Nicholas Kreidberg

Điều tốt là cái này cũng hoạt động nếu bạn đang cố gắng sử dụng trình xem đánh dấu cho các tệp cục bộ trong tiện ích mở rộng / tiện ích bổ sung của trình duyệt.
code_dredd

1
Github thích điều này.
Teoman shipahi

1
bạn đá người! bây giờ nó hoạt động với tôi
Wesin Alves

Điều này là tuyệt vời ngoại trừ không có trong máy tính xách tay ipython của tôi tại github.
eric

129

Chỉ dùng:

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

thay vì:

![](Assets/icon.png)

1
Hầu hết các triển khai Markdown đều có cú pháp được sửa đổi cho điều này vì vậy bạn không cần phải chèn thẻ HTML thô, nhưng đây là điều đúng đắn nếu triển khai bạn đang sử dụng không có.
Nick McCurdy

1
thiên tài đẫm máu! hoạt động cho GitHub =)))
Victor R. Oliveira

Điều này tương thích trong github
thanos.a

Cảm ơn bạn đã làm cho nó đơn giản và sự thay đổi rõ ràng.
Marcy

67

Nếu bạn đang viết MarkDown cho PanDoc, bạn có thể làm điều này:

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

Điều này thêm style="width: 50%;"vào HTML <img>tag, hoặc [width=0.5\textwidth]để \includegraphicstrong LaTeX.

Nguồn: http://pandoc.org/MANUAL.html#extension-link_attribut


1
Nó thậm chí còn đẹp hơn chỉ định kích thước trong các điểm trực tiếp. Tôi rất vui vì đây là cách tiếp cận mà Pandoc đã chọn!
jciloa

2
@ m0z4rt GitHub có thể không sử dụng PanDoc để hiển thị MarkDown.
rudolfbyker

63

Có thể điều này gần đây đã thay đổi nhưng các tài liệu Kramdown cho thấy một giải pháp đơn giản.

Từ các tài liệu

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

And here is a referenced ![smile]

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

Hoạt động trên github với Jekyll và Kramdown.


7
Có thể đã làm việc trong quá khứ nhưng hiện tại không hoạt động trên Github. Thêm thẻ <img> lỗi thời với chiều rộng và chiều cao vẫn hoạt động.
cướp biển

2
Đây là giải pháp tốt nhất nếu bạn đang sử dụng Kramdown hoặc Jekyll (sử dụng Kramdown theo mặc định).
Nick McCurdy

2
Khối thuộc tính như được hiển thị ở đây là một lựa chọn tốt với kramdown. Cú pháp ở đây hơi sai, đó có thể là lý do tại sao @pirHR bồ gặp sự cố. Nó nên là {: height=36 width=36}; cái này tạo ra các thuộc tính HTML, vì vậy nó không nên có pxhậu tố. Thay phiên, bạn có thể sử dụng css với {: style="height:36px; width:36px"}.
Quantum7

Hoạt động cho jekyll! cám ơn. Tôi thậm chí không cần chiều cao và chiều rộng, chỉ cần một cái là đủ. ![alt text](image.png){:height="36px" }
Matthias

1
Tôi đã phải thực hiện một thay đổi nhỏ để làm cho nó hoạt động tốt trong Jekyll. Câu trả lời này xuất ra dưới dạng văn bản HTML không đúng định dạng, vì các thuộc tính widthheightbao gồm phần "px". Đối với tôi, tôi cần sử dụng{:height="36" width="36"}
Maximillian Laumeister 22/12/18

23

Người ta có thể dựa vào altthuộc tính có thể được đặt trong hầu hết tất cả các triển khai / kết xuất Markdown cùng với các bộ chọn CSS dựa trên các giá trị thuộc tính. Ưu điểm là người ta có thể dễ dàng xác định một tập hợp các kích thước hình ảnh khác nhau (và các thuộc tính khác).

Đánh dấu

![minipic](mypic.jpg)

CSS:

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


13
Đây là việc sử dụng sai thuộc tính alt và làm tổn thương khả năng truy cập.
sbuck

2
Vâng, đó là một bản hack NHƯNG dường như vẫn là thứ duy nhất hoạt động trên các hương vị Markdown. +1 để chỉ ra điều đó (những người sử dụng trình đọc màn hình gặp vấn đề với quyền đó? Họ cũng sẽ gặp vấn đề với tất cả những người không bận tâm đến việc sử dụng alt đúng cách).
petermeissner

20

Thay thế ![title](image-url.type)bằng<img src="https://image-url.type" width="200" height="200">


17

Nếu bạn đang sử dụng kramdown , bạn có thể làm điều này:

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

Sau đó thêm phần này vào CSS tùy chỉnh của bạn :

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

3
Tôi khuyên bạn không nên thiết lập chiều rộng chỉ trong CSS. Sẽ rất hữu ích khi thông báo cho trình duyệt biết phần tử hình ảnh sẽ lớn đến mức nào trước khi hình ảnh và biểu định kiểu được tải xong để nó có thể tối ưu hóa bố cục của các thành phần xung quanh hình ảnh mà không cần chỉnh lại.
Nick McCurdy

13

Dựa trên câu trả lời của Tieme, nếu bạn đang sử dụng CSS 3, bạn có thể sử dụng bộ chọn chuỗi con :

Công cụ chọn này sẽ khớp bất kỳ hình ảnh nào với thẻ alt kết thúc bằng '-full thong':

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

Sau đó, bạn vẫn có thể sử dụng thẻ alt cho mục đích dự định của nó để mô tả hình ảnh.

Markdown cho ở trên có thể là một cái gì đó như:

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

Tôi đã sử dụng tính năng này trong Ghost markdown và nó đã hoạt động tốt.


1
Hoạt động hoàn hảo trên kramdown + jekyll-3.1.2.
Subin Sebastian

Nếu bạn không cần hiển thị hình ảnh ở độ rộng tối đa, tốt hơn là đặt kích thước pixel trực tiếp trên thẻ (không phải bằng CSS).
Nick McCurdy

13

Kết hợp hai câu trả lời tôi đưa ra với một giải pháp, có thể trông không đẹp lắm,
nhưng nó hoạt động!

Nó tạo ra một hình thu nhỏ với kích thước cụ thể có thể được nhấp để đưa bạn đến hình ảnh độ phân giải tối đa.

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

Đây là một ví dụ! Tôi đã thử nghiệm nó trên Visual Code và Github. Ví dụ đánh dấu


1
Thông minh. Làm việc với GitLab Enterprise.
Sven Haile

10

Tôi đến đây để tìm kiếm một câu trả lời. Một số gợi ý tuyệt vời ở đây. Và thông tin vàng chỉ ra rằng markdown hỗ trợ hoàn toàn HTMl!

Một giải pháp sạch tốt là luôn luôn đi với cú pháp html thuần túy. Với thẻ.

Nhưng tôi đã cố gắng vẫn theo cú pháp đánh dấu nên tôi đã thử bọc nó xung quanh một thẻ và thêm bất kỳ thuộc tính nào tôi muốn cho hình ảnh bên trong thẻ div. Và nó hoạt động!!

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

Vì vậy, cách này hình ảnh bên ngoài được hỗ trợ!

Chỉ cần nghĩ rằng tôi sẽ đưa nó ra khỏi đó vì nó không có trong bất kỳ câu trả lời. :)


1
Bạn không thể đặt markdown bên trong HTML, bạn sẽ cần phải thay thế ![chilling](link)bằng <img src="link" alt="chilling">.
Charl Kruger

10

Đối với những người xen kẽ trong một rmarkdownknitrgiải pháp. Có một số cách để thay đổi kích thước hình ảnh trong một .rmdtệp mà không cần sử dụng html:

Bạn chỉ có thể chỉ định chiều rộng cho hình ảnh bằng cách thêm {width=123px}. Đừng giới thiệu khoảng trắng ở giữa các dấu ngoặc:

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

Một lựa chọn khác là sử dụng knitr::include_graphics:

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

2
Làm thế nào tôi có thể thay đổi cả chiều cao và chiều rộng? Đối với tùy chọn đầu tiên cụ thể. Tôi đã thử đặt chiều cao và chiều rộng giống nhau {}nhưng không thành công. Riêng {}s thất bại quá.
NelsonGon

2
@NelsonGon: Tôi không bao giờ cần chỉ định cả hai, vì chiều cao cũng tỷ lệ, khi chiều rộng được chỉ định. Vì vậy, tôi không biết liệu điều đó có khả thi hay không và làm thế nào để đạt được nó. Câu hỏi hay, mặc dù ..
Symbolrush

2
Cảm ơn, tôi đã hình dung mình có thể làm như vậy : {height=x width=y}. Có vẻ cú pháp này không nhận ra dấu phẩy nhưng tôi có thể chỉ định các thuộc tính khác bao gồm các thành phần kiểu.
NelsonGon


9

Tôi biết rằng câu trả lời này là một chút cụ thể, nhưng nó có thể giúp những người khác cần.

Vì nhiều ảnh được tải lên bằng dịch vụ Imgur , bạn có thể sử dụng API chi tiết tại đây để thay đổi kích thước của ảnh.

Khi tải lên một bức ảnh trong một bình luận về vấn đề GitHub, nó sẽ được thêm vào thông qua Imgur, vì vậy điều này sẽ giúp ích rất nhiều nếu bức ảnh rất lớn.

Về cơ bản, thay vì http://i.imgur.com/12345.jpg , bạn sẽ đặt http://i.imgur.com/12345m.jpg cho hình ảnh có kích thước trung bình.


7

Bạn cũng có thể sử dụng cái này với kramdown:

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

hoặc là

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

Bằng cách này, bạn có thể trực tiếp thêm các thuộc tính tùy ý vào phần tử html cuối cùng. Để thêm các lớp, có một phím tắt . Class.second class .


5

Cái này hoạt động với tôi nó không phải trong một dòng nhưng tôi hy vọng nó hoạt động cho bạn.

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

Đó là HTML, không phải Markdown ...
MappaM

4

Đối với R-Markdown, cả hai giải pháp trên đều không phù hợp với tôi, vì vậy tôi đã chuyển sang cú pháp LaTeX thông thường , hoạt động rất tốt.

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

Sau đó, bạn có thể sử dụng ví dụ: \begin{center}câu lệnh để căn giữa hình ảnh.


1
+1, nhưng tốt hơn là chỉ \centeringsau \begin{figure}hoặc không có gì, nếu bạn sử dụng `\ clusegraphics [width = \ line thong] {vẽ.jpg}` mà tôi nghĩ rằng đó phải là đầu ra pandoc mặc định ít nhất là khi hình ảnh rộng hơn văn bản.
Fran

4

Có cách với phong cách thêm lớp và css

![pic][logo]{.classname}

sau đó viết liên kết và css bên dưới

[logo]: (picurl)

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

Tham khảo tại đây


4

Đối với tất cả các tìm kiếm giải pháp hoạt động trong R markdown / bookdown , những giải pháp trước đây không / không hoạt động hoặc cần điều chỉnh nhẹ:

Đang làm việc

  • Nối { width=50% }hoặc{ width=50% height=50% }

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

    • Quan trọng: không có dấu phẩy giữa chiều rộng và chiều cao - tức là { width=50%, height=30% } sẽ không hoạt động !

  • Nối { height="36px" width="36px" }

    • ![foo](foo.png){ height="36px" width="36px" }
    • Lưu ý: {:height="36px" width="36px"} với dấu hai chấm, như từ @sayth, dường như không hoạt động với R markdown

Không làm việc:

  • Nối =WIDTHxHEIGHT
    • sau URL của tệp đồ họa để thay đổi kích thước hình ảnh (như từ @prosseek)
    • không chỉ =WIDTHxHEIGHT ![foo](foo.png =100x20)không làm việc=WIDTH![foo](foo.png =250x)

4

Nếu bạn đang sử dụng hình ảnh kiểu tham chiếu Github :

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


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


3

Việc thêm các kích thước tương đối vào URL nguồn sẽ được hiển thị trong phần lớn các trình kết xuất Markdown.

Chúng tôi đã triển khai điều này ở Corilla vì tôi nghĩ rằng mô hình này tuân theo các kỳ vọng về quy trình công việc hiện có mà không khiến người dùng phải dựa vào HTML cơ bản. Nếu công cụ yêu thích của bạn không theo một mẫu tương tự, thì đáng để đưa ra yêu cầu tính năng.

Ví dụ về cú pháp:

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

Ví dụ về mèo con:

mèo con


Thật xấu hổ vì hiện tại nó không hoạt động trên GitHub, nhưng tôi khuyên bạn nên đưa ra một yêu cầu tính năng hoàn toàn giống nhau.
ddri

3

Thay đổi kích thước tệp đính kèm hình ảnh trong máy tính xách tay Jupyter

Tôi đang sử dụng jupyter_core-4.4.0& jupyter notebook.

Nếu bạn đang đính kèm hình ảnh của mình bằng cách chèn chúng vào phần đánh dấu như thế này:

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

Các attachmentliên kết này không hoạt động:

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

LÀM NÀY . Điều này không hoạt động.

Chỉ cần thêm dấu ngoặc div.

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

Hi vọng điêu nay co ich!


3

Để tham khảo trong tương lai:

Triển khai đánh dấu cho Joplin cho phép kiểm soát kích thước của hình ảnh được nhập theo cách sau:

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

Tính năng này đã được yêu cầu ở đây và như đã hứa bởi Laurent này đã được thực hiện.


Tôi phải mất một thời gian để tìm ra câu trả lời cụ thể của Joplin.


2

Khi sử dụng Flask (Tôi đang sử dụng nó với các trang phẳng) ... Tôi thấy rằng việc bật rõ ràng (không phải theo mặc định vì một số lý do) 'attr_list' trong các tiện ích mở rộng trong lệnh gọi để đánh dấu - và sau đó người ta có thể sử dụng các thuộc tính (cũng rất hữu ích để truy cập CSS - class = "lớp của tôi" chẳng hạn ...).

FLATPAGESET_RENDERER = prerender_jinja

và chức năng:

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

Và sau đó trong Markdown:

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


1

Nếu thay đổi đánh dấu ban đầu không phải là một tùy chọn cho bạn, thì hack này có thể hoạt động:

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

Tôi đã sử dụng điều này để có thể thay đổi kích thước hình ảnh trước khi gửi chúng trong email (vì Outlook bỏ qua mọi kiểu dáng css hình ảnh)


1

Câu trả lời của Tieme là tốt nhất cho hầu hết các trường hợp.

Trong trường hợp của tôi, tôi đang sử dụng pandoc để chuyển đổi markdown thành latex. Thẻ HTML sẽ không hoạt động ở đây.

Giải pháp của tôi là thực hiện lại \includegraphics

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

Điều này tương tự với việc sử dụng CSS sau khi chuyển đổi sang HTML.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.