日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
文字サイズ変更:
トップページ > Perlについて
●Perlについて●
2021-08-20 04:55:39画像のサイズを取得して後から置換する方法
スマホ版Snow Web Site Mobileを制作する時、画像の表示でかなり悩みました。
まず、画像を、PC版のものを流用するつもりでしたので、画像のパスでちょっと悩み、また画像の表示が、スマホ版には大きすぎるので、どうしようかと思っておりました。
まず、正規表現で置き換えを行ったのですが、上手くいく画像と上手くいかない画像が出てきて困りました。画像のサイズ取得に関しては、Image::Magick(PerlMagick)を使用しました。
上記が、テストデータです。
画像タグが2つ入っています。
while文で、上記の場合、2回ループしています。一回目は、始めのまで$1に格納しています。そして、s///の置換演算子で、サイズを挿入しています。2回目のループに入るために、$’に残りを格納してあるのを、最初のif文で引っ掛けるために、$contents0に格納します。
そして、最後にelseで残りのテストデータを格納しています。
まず、画像を、PC版のものを流用するつもりでしたので、画像のパスでちょっと悩み、また画像の表示が、スマホ版には大きすぎるので、どうしようかと思っておりました。
まず、正規表現で置き換えを行ったのですが、上手くいく画像と上手くいかない画像が出てきて困りました。画像のサイズ取得に関しては、Image::Magick(PerlMagick)を使用しました。
my $contents0 = qq|<a href="https://www.exsample.com">公式サイト</a><center><img src="../sample.jpg"></center>Windows用を選んで、この中で「program_all.exe」を選びます。先頭の「program_del.exe」は、選びませんでした。 dellとついているのですが、これは、これは選びません。<br><br>ダウンロードして、インストールします。いくつか、 next を選ぶと、こんな画面が表示されます。<center><img src="../sample2.png"></center>|;
上記が、テストデータです。
画像タグが2つ入っています。
my $contents1 = "";
my $contents2 = "";
my $contents3 = "";
#何度でも繰り返す
while (1) {
if ( $contents0 =~ m/^(.+?(/center>))/ ) {
$w = 320;
$contents1 = $1;
$contents0 = $’; # 見つけた繰り返しシーケンスのうしろが次の対象
$contents3 = $’; # 見つけた繰り返しシーケンスのうしろが次の対象
$contents1 =~ s/<img src="(.+?)">/<img src="$1" width="$w">/;
$contents2 .= $contents1;
$contents1 = "";
}else{
$contents2 .= $contents3;
last; # もう目指すパターンはないので while (1) から脱出
}
}
print "成形後$contents2";
while文で、上記の場合、2回ループしています。一回目は、始めのまで$1に格納しています。そして、s///の置換演算子で、サイズを挿入しています。2回目のループに入るために、$’に残りを格納してあるのを、最初のif文で引っ掛けるために、$contents0に格納します。
そして、最後にelseで残りのテストデータを格納しています。
Print
Twitter(test)
short URL
いいね:41 back to the TOP |