序文
良き兄弟の皆さん、2022 年は過去のことと考えることができます。もうすぐ旧正月ではないでしょうか。
つまり、皆さんにはパートナーはいますか? いない場合は、家に帰ると親戚からさまざまな質問を受けなければなりません。
一歩下がって、好きな人はいますか?もしいるなら、このプログラマーの告白のヒントを見てみましょう。
えっと、ここではまだ写真を準備する必要があるので、絵文字パッケージだけを撮ります。どの写真を撮るべきかはまだわかっています
実装手順
ピクセルで愛を書きたい場合は、枕のアーティファクトを使用する必要があります。
ご存知のように、写真は無数のピクセルで構成されており、写真を無限に拡大すると、ピクセルである小さな正方形が表示されます。
1. 準備
Pillow ライブラリは画像の操作に使用されることは誰もが知っています。Pillow はサードパーティのライブラリであるため、使用する前に pip を使用してインストールする必要があります。
pip install Pillow
2. 枕の紹介
インストールが完了したら、一般的な例をいくつか簡単に紹介します。
写真を作成して保存する
from PIL import Image
#创建一张新的图片:mode 为RGB,size :520x520 ,color :0,100,200
img = Image.new('RGB',(520,520),(255,192,203))
# 保存图片
img.save('img.jpg')
コードを実行すると、img.jpg 画像がデフォルトのパスに自動的に作成されることがわかります。
写真がどのようなものかを見てみましょう
絵を描き直す
上で生成された画像では、2 本の線を描画します
python学习交流Q群:309488165 ### 源码领取
from PIL import Image,ImageDraw
#创建一张新的图片
#img = Image.new('RGB',(520,520),(0,100,200))
#img.save('img.jpg')
#直接打开生成的img.jpg图片
img = Image.open('img.jpg')
#取得绘图对象,需要绘制对角线
draw = ImageDraw.Draw(img)
#绘制对角线
draw.line((0,0,img.size[0],img.size[1]),fill = 128 ,width = 2)
draw.line((0,img.size[1],img.size[0],0),fill = 128 ,width = 2)
#保存图片
img.save('img-line.jpg')
生成された写真を見てみましょう
画像の結合
次に、2 つの画像を結合します
from PIL import Image
#直接打开img.jpg图片
img = Image.open('img.jpg')
#创建一个小的图片
img_small = Image.new('RGB',(30,30),'yellow')
#把img_samll 黏贴在 img.jpg图片的 的20x20的位置
img.paste(img_small,(20,20))
#保存新生成的图片
img.save('img-paste.jpg')
それがどのように機能するかを見てください
目を確認しました、それは私が望む効果です〜
3. 実践的な訓練
考え方は大きく3つのステップに分かれます
1. まず基本情報を作成します: コンテンツ、ピクセル サイズ、フォント タイプ、画像パスをコピーします;
2. コンテンツを埋めるための小さな画像を作成し、大きな画像を作成した状態で小さな画像コンテンツを塗りつぶします; 3. 画像
内のピクセルをループし、その上にテキストを貼り付けます。
実装コード
from PIL import Image,ImageDraw,ImageFont
#像素放大尺寸
img_king_size = 20
#输入内容
text = '这是阳敌'
#设置字体
font = ImageFont.truetype('simsun.ttc',img_king_size)
#图片路径
img_path = 'C:/小圆/python学习交流Q群:309488165.jpg'
#打开图片
img = Image.open(img_path)
img_w,img_h = img.size
#创建一个小图,用于填充字体
img_child = Image.new("RGB", (img_king_size, img_king_size))
#创建一个大图,状态填充好的小图字体
img_ans = Image.new("RGB",(img_w * img_king_size,img_h * img_king_size))
#获取单个文字的宽和高
text_w,text_h = font.getsize('中')
#文字水平居中
offset_x = (img_king_size - text_w) >> 1
#文字垂直居中
offset_y = (img_king_size - text_h) >> 1
char_index = 0
#小图用于绘制文字
draw = ImageDraw.Draw(img_child)
#循环遍历原图的每一个像素点
for x in range(img_w):
for y in range(img_h):
#绘制背景,让图片更好看
draw.rectangle((0,0,img_king_size,img_king_size),fill = 'lightgray')
#用(x,y)处的像素点的色值进行绘制字体
draw.text((offset_x,offset_y),text[char_index],font = font,fill = img.getpixel((x,y)))
img_ans.paste(img_child,(x * img_king_size,y * img_king_size))
char_index = (char_index + 1) % len(text)
img_ans.save('king-letter.jpg')
結果を示す
レンダリングを見てみましょう
生成された写真はステーション C の最大アップロード制限を超えています (私の写真は 46M です、ハハハ、私の男性神をお見せしましょう)
したがって、元の画像をアップロードすることはできません。効果を確認するにはスクリーンショットを撮ることしかできません。
拡大版も拡大できます
写真の横幅が長いため、ここでは文字が縦長で表示されていますが、横長の写真に変更すると文字も横長になります。
自分で試してみて最大限に活用することができます。
やっと
私の友達は Python を学んでいますが、どうやって学べばいいのか、どこから始めればよいのかわからないことがあります。基本的な文法をマスターしたり、事例を 2 つこなしたりした後、次のステップに進む方法がわかりません。また、より高度な知識をどのように学べばよいかわかりません。
そこで、これらの友達のために、無料のビデオチュートリアル、PDF 電子書籍、ソースコードをたくさん用意しました。記事の最後にある名刺を手に取ってください。
今日のシェアはここで終わります
ところで、役立つことを願って、いくつかの Python ビデオ チュートリアルをお勧めしたいと思います。
記事について質問がある場合、または Python に関するその他の質問がある場合は、コメント エリアにメッセージを残すか、私にプライベート メッセージを残すことができます。私がシェアした記事が良いと思われる場合は、私をフォローするか、記事に高評価を与えることができます (/≧▽≦)
/