28画像ソースを通常のリンクからhtmlファイルのbase64エンコーディングに変換するスクリプトを作ってみました。しかし、問題があります: sed が教えてくれることがあります
script.sh: 25 行目: /bin/sed: 引数リストが長すぎます
これはコードです:
#!/bin/bash
# usage: ./script.sh file.html
mkdir images_temp
for i in `sed -n '/<img/s/.*src="\([^"]*\)".*/\1/p' $1`;
do echo "######### download the image";
wget -P images_temp/ $i;
#echo "######### convert the image for size saving";
#convert -quality 70 `echo ${i##*/}` `echo ${i##*/}`.temp;
#echo "######### rename temp image";
#rm `echo ${i##*/}` && mv `echo ${i##*/}`.temp `echo ${i##*/}`;
echo "######### encode in base64";
k="`echo "data:image/png;base64,"`$(base64 -w 0 images_temp/`echo ${i##*/}`)";
echo "######### deletion of images_temp pictures";
rm images_temp/*;
echo "######### remplace string in html";
sed -e "s|$i|$k|" $1 > temp.html;
echo "######### remplace final file";
rm -rf $1 && mv temp.html $1;
sleep 5;
done;
画像が ~128ko より大きい場合、$k 引数は sed には長すぎると思います。sed はそれを処理できません。
どうすれば機能しますか?
前もって感謝します !
PS1: 非常に醜いコードで申し訳ありません
PS2:または、Pythonでそれを行うにはどうすればよいですか? PHP ? 私は開いています!