Pythonの[画像]は切り身比較2つのスキーム

需要:既存の200枚の* 200ピクセルのJPG画像は、129 * 129ピクセルのPNG丸みを帯びた頭部に作られます。

二つのプログラム。

 

シナリオ1:JPG画像を直接、グレースケールマスクを用いて、丸みを帯びたPNGれて重ね合わさ。

 

利点:便利な、ハンズP透明テンプレートベースマップなし。

短所:非常に明確な鋸歯状に丸めPSの使用と比較して、高精細マップは、使用することはできませんが明らかにノコギリ波、作られたマスクをクリッピング丸め。

図影響:(マスク10のような丸みを帯びた矩形の129 * 129の半径)PS結果を左、右は、結果コードが実行されます。

処理フィレット、増加トランジション効果、およびPythonプログラムは比較的簡単であるが見られる、PSは、ジグザグに直接人が示します。したがって、直接ハード無効コード(又はコードの更なる最適化を必要とする)を切断元の丸い角に。

Pythonコードは、ハードカットフィレット、レンダリングを見て、私の中で説明した別のブログ

# 使用 PIL 将图象处理为圆角矩形
# Success
 
from PIL import Image, ImageDraw
 
radii=10
img = Image.open('flag.jpg')	
 
# 矩形图像转为圆角矩形
def circle_corner(img, radii):
	# 画圆(用于分离4个角)
	circle = Image.new('L', (radii * 2, radii * 2), 0)  # 创建黑色方形
	# circle.save('1.jpg','JPEG',qulity=100)
	draw = ImageDraw.Draw(circle)
	draw.ellipse((0, 0, radii * 2, radii * 2), fill=255)  # 黑色方形内切白色圆形
	# circle.save('2.jpg','JPEG',qulity=100)
 
	# 原图转为带有alpha通道(表示透明程度)
	img = img.convert("RGBA")
	w, h = img.size
 
	# 画4个角(将整圆分离为4个部分)
	alpha = Image.new('L', img.size, 255)	#与img同大小的白色矩形,L 表示黑白图
	# alpha.save('3.jpg','JPEG',qulity=100)
	alpha.paste(circle.crop((0, 0, radii, radii)), (0, 0))  # 左上角
	alpha.paste(circle.crop((radii, 0, radii * 2, radii)), (w - radii, 0))  # 右上角
	alpha.paste(circle.crop((radii, radii, radii * 2, radii * 2)), (w - radii, h - radii))  # 右下角
	alpha.paste(circle.crop((0, radii, radii, radii * 2)), (0, h - radii))  # 左下角
	# alpha.save('4.jpg','JPEG',qulity=100)
 
	img.putalpha(alpha)		# 白色区域透明可见,黑色区域不可见
	img.save('5.png','PNG',qulity=100)
 
	return img
 
img = circle_corner(img, radii)
img.save('result.png', 'png', quality = 100)

 

スキーム2:JPGは、フィレットPNGと重ね合わせ

 

利点:いいえフィレットギザギザ、およびPSトランジション効果と同様の効果

不利な点:最初に、丸みを帯びたベースマップPSクリッピングマスクで129 * 129 10黒い背景の半径を生成するために必要。

図影響:(マスク10のような丸みを帯びた矩形の129 * 129の半径)PS結果を左、右は、結果コードが実行されます。

あなたは、Pythonの効果はPSに劣っていない(すべての後に、PNGまたはPS輸出基地の地図...)、同じに両方の近くを見ることができます。とにかく、結論は、この方法は、高精細画像の生産に適しているということです。

コードは簡単です:

# mkicon
from PIL  import Image,ImageOps

img = Image.open('src.jpg').resize((129,129))

border = Image.open('b.png').convert('L')
invert = ImageOps.invert(border)
invert.save('invert.png')

img.putalpha(invert)
img.save('icon.png','PNG',qulity=100)

示されているような要件をリソース:

コードputalpha()は、アルファ透明チャンネルを高めることを目的として、反転()画像の色反転、参照の意味を特定枕ライブラリの公式マニュアルを

 

最後に、 

スクリーンショット感謝製ソフトウェアSnipaste 

テキスト画像は初めてSnipasteの傍受や編集ソフトのブロガーあり、国内のソフトウェアの個人的な開発は、このような素敵な、Zhennai業界の祝福を持っています。

发布了58 篇原创文章 · 获赞 44 · 访问量 18万+

おすすめ

転載: blog.csdn.net/qilei2010/article/details/104572847