需要:既存の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業界の祝福を持っています。