2016-06-27 5 views
2

私はimgに画像widthheightを自動的に追加するスクリプトを作成しようとしています。私はすでにこの質問を見てきました:画像タグに幅と高さの属性を自動的に追加します

Automatically adding width and height attributes to <img> tags with a PHP function

しかし、私はjekyllを使用しています。

私の最初の考えは、私の投稿ディレクトリにgrepを実行し、imgの各出現について、画像URIを得て、そのサイズを計算する。これは可能ですか?

私もfastImageに見てきたが、それはジキルとローカルファイルでうまく動作しません(Here is a Jekyll filter

あなたは私にこれを実現する方法についていくつかのヒットを与えてもらえますか? 。

+0

てきた、それがお役に立てば幸いです。あなたのためにはうまくいかない理由はありますか?私はあなたがなぜこれをやる必要があるのか​​聞いても好奇心が強いでしょう。 –

+0

@KevinWorkman私はGoogle AMPページを実装しており、amp-imgは指定する属性を必要とするためです。 – elbaulp

+0

@KevinWorkmanイメージタグは常にheight属性とwidth属性を持つ必要がありますが、表示するには必須ではありません。すべてのSEOツールは、欠落している場合、それらのフラグを立てます。 – Lee

答えて

2

私は最終的に解決策、Pythonスクリプトを思い付いた、ここでそれは(私はgithub gist)をも作成しましたです

ここでは、コードの背後にある主要なアイデアです:すべての上

  • 反復ブログの記事。
  • は各ポスト内のすべてのimgのタグを検索します。
  • src属性の内容を抽出します。
  • 画像を開きますそのサイズを抽出する。
  • imgの画像のサイズはwidthheightとなります。

コード:ちょうどあなたのマシンでスクリプトを作成し、あなたの記事がどこにあるか指すようにpath変数を変更

を使用する方法

#!/bin/python 
from BeautifulSoup import BeautifulSoup 
from os.path import basename, splitext 
from PIL import Image 
import glob 

# Path where the posts are, in markdown format 
path = "/ruta/ficheros/*.md" 

# Iterate over all posts 
for fname in glob.glob(path): 
    # Open the post 
    f = open(fname) 
    # Create a BeautifulSoup object to parse the file 
    soup = BeautifulSoup(f) 
    f.close() 
    # For each img tag: 
    for img in soup.findAll('img'): 
     if img != None: 
      try: 
       if img['src'].startswith("/assets") == True: 
        # Open the image 
        pil = Image.open("/ruta/carpeta/imagenes" + img['src']) 
        # Get its size 
        width, height = pil.size 
        # Modify img tag with image size 
        img['width'] = str(width) + "px" 
        img['height'] = str(height) + "px" 
      except KeyError: 
       pass 
    # Save the updated post 
    with open(fname, "wb") as file: 
     file.write(str(soup)) 

は、あなただけのクライアント側でこれを実行するためにJavaScriptを使用することができ、私もwrote a blog post about this issue

+1

どこに追加しましたか?それを使用する方法を説明できますか? – Alvaro

+0

@Alvaroこんにちは、私は答えを更新し、コードにコメントし、一般的な手順を示しました。それが役に立てば幸い。 – elbaulp

+0

ありがとうございますが、まだ私には分かりません。それはどんな言語ですか?どのように実行するのですか? BeautifulSoupとは何ですか? – Alvaro

関連する問題