рдЯрд┐рд▓реНрдЯ-рд╢рд┐рдлреНрдЯ DIY рддрд╕реНрд╡реАрд░реЗрдВ

рдЯрд┐рд▓реНрдЯ-рд╢рд┐рдлреНрдЯ рд▓реЗрдВрд╕ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рдорджрдж рд╕реЗ рдХрдИ рдЬрд╛рдиреЗрдВ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рд╣рдм рдкрд░ рдЯрд┐рд▓реНрдЯ-рд╢рд┐рдлреНрдЯ рдЬрдирд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдерд╛, рдЬреЛ рд╕рд╛рдзрд╛рд░рдг рддрд╕реНрд╡реАрд░реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдХреЗ рдЗрд╕ рдЖрд╢рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЕрднреА рднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЧреНрд░рд╛рдлрд┐рдХ рд╕рдВрдкрд╛рджрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рднреА рдкреИрд╕реЗ рдФрд░ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдФрд░ рдЯреВрд▓ рдХреЛ рдкреЗрд╢реЗрд╡рд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд▓реЗрдВрд╕ рдСрдкреНрдЯрд┐рдХреНрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░, рдЦреБрд▓рд╛ рдФрд░ рд╕реБрд▓рдн! рдпрд╣ рдХреНрдпрд╛ рдЖрдпрд╛ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ рд╣реИ - рдЖрдк рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рд▓рдШреБрдЪрд┐рддреНрд░ рдмрдирд╛рдХрд░ред
рдЖрд░рдВрдн рдХрд░рдирд╛, рдкрд╣рд▓реА рдЪреАрдЬ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдлреЛрдЯреЛ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЙрди рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╢реБрд░реВ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдкрд░рд┐рджреГрд╢реНрдп, рд╢рд╣рд░ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдПрдХ рдКрдВрдЪрд╛рдИ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдЫреЛрдЯреА рд╕реА рджреБрдирд┐рдпрд╛ рдХрд╛ рднреНрд░рдо рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдпрд╣ рднреА рдЕрдЪреНрдЫрд╛ рд╣реИ рдЕрдЧрд░ рдлреНрд░реЗрдо рдореЗрдВ рдЫреЛрдЯреА рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдкрд░рд┐рд╡рд╣рди рдФрд░ рд▓реЛрдЧред



рдРрд╕реА рддрд╕реНрд╡реАрд░реЛрдВ рдореЗрдВ рдореБрдЦреНрдп рдкреНрд░рднрд╛рд╡ рд▓реЗрдВрд╕ рдХреЛ рдШреБрдорд╛рдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдлреЛрдХрд╕ рд╡рд┐рдорд╛рди рдСрдкреНрдЯрд┐рдХрд▓ рдЕрдХреНрд╖ рдкрд░ рд▓рдВрдмрд╡рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ, рдХреНрд╖реЗрддреНрд░ рдХреЗ рдПрдХ рдХреАрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЧрд╣рд░рд╛рдИ рдХреЗ рдЧрдарди рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдЧреНрд░рд╛рдлрд┐рдХ рд╕рдВрдкрд╛рджрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдкреНрд░рднрд╛рд╡ рдХреЛ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рдЖрдк рдлрд╝реЛрдЯреЛрд╢реЙрдк рд╕рдмрдХ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╕рд╛рдЗрдЯ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЪрд▓реЛ рдмрд┐рдВрджреБ рдкрд░ рд╕рд╣реА рд╣реЛред

рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рддрд╕реНрд╡реАрд░ рдХреЛ рдЪреБрдирд╛:



рдлрд╝реЛрдЯреЛрд╢реЙрдк рдореЗрдВ рд╕рдВрддреГрдкреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдлрд┐рд▓реНрдЯрд░ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:



рдмреЗрд╢рдХ, рдЖрдк рдПрдХ рдкрд░рд┐рд╖реНрдХреГрдд рдкрд╛рдардХ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдСрдкреНрдЯрд┐рдХрд▓ рдкреНрд░рднрд╛рд╡ рдлрд┐рд▓реНрдЯрд░ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдлреНрд░реЗрдо рдХреА рдХрд╛рдлреА рд╕рдХреНрд╖рдо рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдЖрдк рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдЬреЛ рдХреБрдЫ рднреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛, рд╡рд╣ рдХреГрддреНрд░рд┐рдо рдмреЛрдХреЗрд╣ рдХреЛ рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд░рдЦрдирд╛ рдФрд░ рд░рдВрдЧ рд╕рдВрддреГрдкреНрддрд┐ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдерд╛, рдЬреЛ рдлреНрд░реЗрдо рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд▓рд╛рд╕реНрдЯрд┐рдХ рдореЙрдбрд▓ рдХрд╛ рдкреНрд░рднрд╛рд╡ рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдЪрд▓реЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред

рдЪрд▓реЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрдЦреМрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрд╛рдо рд╕реЗ рддреБрд░рдВрдд рдЦреБрдж рдХреЛ рд▓реЛрдб рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рдлрд╝реЛрдЯреЛрд╢реЙрдк рдореЗрдВ рдХрд░реЗрдВрдЧреЗред рдЕрдВрдзреЗрд░реЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ, рд╕рдлреЗрдж - рд╢реВрдиреНрдп рдореЗрдВ, рдЕрд▓реНрдлрд╛ рдкрд░рдд рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧреА, рдЕрд░реНрдерд╛рдд, рдЗрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЫрд╡рд┐ рдкрд╛рд░рджрд░реНрд╢реА рд╣реЛрдЧреАред



рдХрд╛рд▓реЗ рдкрд┐рдХреНрд╕реЗрд▓ рд╡рд╛рд▓реЗ рд╕реНрдерд╛рди рдкрд░, рдмреЛрдХреЗ рдУрд╡рд░рд▓реИрдк рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рджреГрд╢реНрдп рдлреЛрдХрд╕ рдореЗрдВ рд░рд╣реЗрдЧрд╛ред рдорд╛рд╕реНрдХ "рд╕рд╡рд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ" рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдХреЗрд╡рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╣реИред
рдЕрдЬрдЧрд░ рдореЗрдВ рдереЛрдбрд╝реА рдЦреБрджрд╛рдИ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЗрддрдиреА рдЫреЛрдЯреА рдФрд░ рд╕рд╛рдл рд╕реБрдерд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд┐рд▓реА:

  1. рдЖрдпрд╛рдд рдЫрд╡рд┐
  2. рдЖрдпрд╛рдд sys
  3. рдЖрдпрд╛рдд рдПрдирдкреАрдкреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реБрдиреНрди
  4. scipy рдЖрдпрд╛рдд ndimage рд╕реЗ
  5. рдЫрд╡рд┐ рдЖрдпрд╛рдд рдХрд░реЗрдВ
  6. # INIT
  7. blur_size = 6
  8. image_base = " /Users/Mango/Desktop/tiltshift_alpha.png "
  9. image_mask = " /Users/Mango/Desktop/mask_tiltshift.png "
  10. image_output = " /Users/Mango/Desktop/tiltshift_preview.png "
  11. # рд▓реЛрдб
  12. im_base = рдЫрд╡рд┐ред рдЦреБрд▓рд╛ ( image_base )
  13. im_mask = рдЫрд╡рд┐ред рдЦреБрд▓рд╛ ( рдЫрд╡рд┐_рдорд╛рд╕реНрдХ )
  14. im_mask = im_maskред рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ ( im_baseред рдЖрдХрд╛рд░ )
  15. # рдкреНрд░рдХреНрд░рд┐рдпрд╛
  16. enh = ImageEnhanceред рд░рдВрдЧ ( im_base )
  17. im_base = enhред рд╡реГрджреНрдзрд┐ ( 1.7 )
  18. enh = ImageEnhanceред рдХрдВрдЯреНрд░рд╛рд╕реНрдЯ ( im_base )
  19. im_base = enhред рд╡реГрджреНрдзрд┐ ( 1.2 )
  20. im_bloub = npред рд╕рд░рдгреА ( im_base, dtype = float )
  21. im_blined = ndimageред рдЧрд╛рдКрд╕реА_рдлрд┐рд▓реНрдЯрд░ ( im_blined, sigma = [ blur_size, blur_size, 0 ) )
  22. im_bloub = рдЫрд╡рд┐ред рдлрд░рдорд╛рди ( npред uint8 ( im_bloub ) )
  23. im_mask = im_maskред рдХрдиреНрд╡рд░реНрдЯ ( "рдПрд▓" )
  24. im_base = im_baseред рдХрдиреНрд╡рд░реНрдЯ ( "RGBA" )
  25. # MERGE AND SAVE
  26. im_baseред рдкреЗрд╕реНрдЯ ( im_blined, рдорд╛рд╕реНрдХ = im_mask )
  27. im_baseред рд╕рд╣реЗрдЬреЗрдВ ( image_output )

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдореВрд▓ рдЫрд╡рд┐ рдФрд░ рдореБрдЦреМрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдореБрдЦреМрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ рдЫрд╡рд┐ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред ImageEnhance рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд░рдВрдЧ, рдЪрдордХ рдФрд░ рдХрдВрдЯреНрд░рд╛рд╕реНрдЯ рдЬреИрд╕реЗ рд╕рдВрдХреЗрддрдХ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ im_blined рдЫрд╡рд┐ рдХреА рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЛ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдмреЛрдХреЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рдЧрд╛рдКрд╕реА рдмреНрд▓рд░ рдлрд┐рд▓реНрдЯрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреЗрд╢реЗрд╡рд░ рд╕рдВрдкрд╛рджрдХреЛрдВ рдореЗрдВ рд╕рдорд╛рди рд▓реЗрдВрд╕ рдмреНрд▓рд░ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдоред
рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ, рдПрдХ рдзреБрдБрдзрд▓реА рдЫрд╡рд┐ рдПрдХ рдЕрд▓реНрдлрд╛ рдорд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рдореВрд▓ рдкрд░ рдЖрд░реЛрдкрд┐рдд рд╣реЛрддреА рд╣реИред рдпрд╣ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рдд рдХрд╛ рд╕рд╣реА рдкреИрд▓реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЛрдиреЛрдХреНрд░реЛрдо рдПрд▓ рдореЛрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрд▓реНрдлрд╛-рд▓реЗрдпрд░ рдХреЛ рдХрдиреНрд╡рд░реНрдЯ ("RGBA") рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓ рдЫрд╡рд┐ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдорд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреВрд╕рд░реА рдкрд░рдд рдХреЛ рд╕реБрдкрд░рдореНрдпреВрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╣реИ:



рдЕрдм рд╣рдо рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдВрдЧреЗ рдФрд░ рд╣рд╛рде рд╕реЗ рдЦреАрдВрдЪреЗ рдЧрдП рдорд╛рд╕реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд╕реВрд░рдд рдмрд╛рд╣рд░реА рдЬреЛрдбрд╝ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓реЗрдВрдЧреЗред рдпрд╣ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рддрдерд╛рдХрдерд┐рдд рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдврд╛рд▓ рд╣реИ рдФрд░ рдЗрд╕реЗ рджреЛ рдХреЛрд▓реАрдирд┐рдпрд░ рд╡реИрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рдФрд░ рднреА рдЕрдзрд┐рдХ рд╕рд░рд▓реАрдХреГрдд рд░реВрдк рдореЗрдВ, рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рдкреВрд░реА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рджрд┐рд╢рд╛, рд╡реЗрдХреНрдЯрд░ рдП рдХреА рд▓рдВрдмрд╛рдИ, рдлреЛрдХрд╕ рдХреНрд╖реЗрддреНрд░ рдФрд░ рд╡реЗрдХреНрдЯрд░ рдмреАред рд╕рднреА рджреВрд░рд┐рдпрд╛рдВ рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП y рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред
рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рджреА рдЧрдИ рджреВрд░реА рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдпрд╣ рдПрдХ рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛ред рдлрд┐рд░, рд╡рд┐рднрд┐рдиреНрди рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░рдХреЗ, рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдЖрдХрд╛рд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдХреЛрдг рдкрд░ рдШреБрдорд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдереЛрдбрд╝рд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓рд╛:

  1. рдЖрдпрд╛рдд рдЫрд╡рд┐
  2. ImageDraw рдЖрдпрд╛рдд рдХрд░реЗрдВ
  3. ImageOps рдЖрдпрд╛рдд рдХрд░реЗрдВ
  4. рдЖрдпрд╛рдд рдЧрдгрд┐рдд
  5. def_mask ( рдХреЛрдг, рдЪреМрдбрд╝рд╛рдИ, рдКрдБрдЪрд╛рдИ, рдСрдлрд╝рд╕реЗрдЯ_рдЗрдирд┐рдЯ, рдСрдлрд╝рд╕реЗрдЯ_рдП, рдСрдлрд╕реЗрдЯ_рдлреЛрдХрд╕, рдСрдлрд╕реЗрдЯ_ ) :
  6. рдСрдлрд╕реЗрдЯ = рдКрдВрдЪрд╛рдИ * рдСрдлрд╕реЗрдЯ_рдЗрдирд┐рдЯ / 100
  7. рд╡реЗрдХреНрдЯрд░рдП = рдСрдлрд╕реЗрдЯ + рдСрдлрд╕реЗрдЯ_рдП * рдКрдВрдЪрд╛рдИ / 100
  8. рдлрд╝реЛрдХрд╕ = рд╡реЗрдХреНрдЯрд░рдП + рдСрдлрд╕реЗрдЯ_рдлреЛрдХрд╕ * рдКрдВрдЪрд╛рдИ / 100
  9. рд╡реЗрдХреНрдЯрд░рдмреА = рдлреЛрдХрд╕ + рдСрдлрд╕реЗрдЯ_ * рдКрдВрдЪрд╛рдИ / 100
  10. рдореБрдЦреМрдЯрд╛ = рдЫрд╡рд┐ред рдирдпрд╛ ( 'L' , ( рдЪреМрдбрд╝рд╛рдИ, рдКрдВрдЪрд╛рдИ ) )
  11. mask_1px = рдЫрд╡рд┐ред рдирдпрд╛ ( 'рдПрд▓' , ( 1 , рдКрдВрдЪрд╛рдИ ) )
  12. draw_1px = ImageDrawред рдбреНрд░рд╛ ( mask_1px )
  13. y рдХреЗ рд▓рд┐рдП рд░реЗрдВрдЬ рдореЗрдВ ( 0 , рдСрдлрд╕реЗрдЯ ) : # рдбреНрд░рд╛ рд╕рдлреЗрдж рдХреНрд╖реЗрддреНрд░
  14. draw_1pxред рдмрд┐рдВрджреБ ( 0 , y ) , 255 )
  15. y рдХреЗ рд▓рд┐рдП рд░реЗрдВрдЬ рдореЗрдВ ( рдСрдлрд╕реЗрдЯ, рд╡реЗрдХреНрдЯрд░рдП ) : # рдбреНрд░рд╛ рд╡реЗрдХреНрдЯрд░рдП
  16. draw_1pxред рдмрд┐рдВрджреБ ( 0 , y ) , ( рд╡реЗрдХреНрдЯрд░-рд╡рд╛рдИ ) * ( 255 / ( рд╡реЗрдХреНрдЯрд░рдП-рдСрдлрд╕реЗрдЯ ) ) )
  17. рд░реЗрдВрдЬ рдореЗрдВ y ( рд╡реЗрдХреНрдЯрд░рдП, рдлреЛрдХрд╕ ) рдХреЗ рд▓рд┐рдП : # рд╕рдлреЗрдж рдХреНрд╖реЗрддреНрд░ рдбреНрд░рд╛ рдХрд░реЗрдВ
  18. draw_1pxред рдмрд┐рдВрджреБ ( 0 , y ) , 0 )
  19. y рдореЗрдВ рд░реЗрдВрдЬ ( рдлрд╝реЛрдХрд╕, рд╡реЗрдХреНрдЯрд░рдмреА ) : # рдбреНрд░рд╛ рд╡реЗрдХреНрдЯрд░рдмреА
  20. draw_1pxред рдмрд┐рдВрджреБ ( 0 , y ) , 255 - ( рд╡реЗрдХреНрдЯрд░рдмреА-рд╡рд╛рдИ ) * ( 255 / ( рд╡реЗрдХреНрдЯрд░рдмреА-рдлреЛрдХрд╕ ) )
  21. рд░реЗрдВрдЬ рдореЗрдВ y ( рд╡реЗрдХреНрдЯрд░рдмреА, рдКрдВрдЪрд╛рдИ ) рдХреЗ рд▓рд┐рдП : # рдбреНрд░рд╛ рд╕рдлреЗрдж рдХреНрд╖реЗрддреНрд░
  22. draw_1pxред рдмрд┐рдВрджреБ ( 0 , y ) , 255 )
  23. m_width, m_height = рдорд╛рд╕реНрдХред рдЖрдХрд╛рд░
  24. mask_1px = mask_1pxред рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ ( ( int_m_ * 3 ) , m_height ) , рдЫрд╡рд┐ред ANTIALIAS )
  25. mask_1px = ImageOpsред рдЙрд▓реНрдЯрд╛ ( mask_1px )
  26. mask_top = mask_1pxред рдШреБрдорд╛рдПрдБ ( рдХреЛрдг, рдЫрд╡рд┐ред NEAREST , 1 )
  27. mask_top = ImageOpsред рдЙрд▓рдЯрд╛ ( рдорд╛рд╕реНрдХ_рдЯреЙрдк )
  28. рдореБрдЦреМрдЯрд╛ред рдХрдиреНрд╡рд░реНрдЯ ( "RGBA" )
  29. n_width, n_height = mask_topред рдЖрдХрд╛рд░
  30. рдореБрдЦреМрдЯрд╛ред рдкреЗрд╕реНрдЯ ( рдорд╛рд╕реНрдХ_рдЯреЙрдк, ( -n_width / 2 , - ( n_height / 2 -height / 2 ) )
  31. рдореБрдЦреМрдЯрд╛ред рдХрдиреНрд╡рд░реНрдЯ ( "рдПрд▓" )
  32. рд╡рд╛рдкрд╕реА рдореБрдЦреМрдЯрд╛



рдпрджрд┐ рдЖрдк рдЯреВрд▓ рдХреЛ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕реЗ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рд╕реНрдХреНрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЛрдб рд░реЛрдЯреЗрд╢рди рдПрдВрдЧрд▓ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред
рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд╕реНрд░реЛрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдЬреАрдердм рдкрд░ рд╣реИ ред

Source: https://habr.com/ru/post/In140135/


All Articles