рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рд╛рде JPEG рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдмреЗрд╢рдХ, рдЬреЗрдкреАрдИрдЬреА рдкреНрд░рд╛рд░реВрдк рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдкреАрдПрдирдЬреА рдХреЗ рдмрдЬрд╛рдп рдЬреЗрдкреАрдИрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд░реЛрдорд╛рдВрдЪрдХ рд╣реИред рдХреЙрдорд░реЗрдб рдкреЙрд▓рдЬрд╝реА рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ HTML рдХреЗ рд▓рд┐рдП рдПрд╕рд╡реАрдЬреА рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ , рдЬреЛ рдЫрд╡рд┐ рдХреЛ рд╕реНрд╡рдпрдВ рдФрд░ рдорд╛рд╕реНрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЬрд┐рдо рд╕реНрдЯрдб рдЬреЗрдкреАрдИрдЬреА рдореЗрдВ EXIF тАЛтАЛрдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╡рд╣рд╛рдВ рдорд╛рд╕реНрдХ рдХрд╛ рднрдВрдбрд╛рд░рдг рдХрд░рдиреЗ, рдФрд░ рдХреИрдирд╡рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рд╡реЗрдм рдкреЗрдЬ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред
рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдард┐рди рд╣реИ, рдФрд░ рд╡реЗрдм рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛: RGB рдХреЗ рд▓рд┐рдП рд╣рд╛рдирд┐рдкреВрд░реНрдг JPEG рдФрд░ PNG рдореЗрдВ рдПрдХ рджреЛрд╖рд░рд╣рд┐рдд рдорд╛рд╕реНрдХ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ UIImage рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВред рдореИрдВ рддреБрд░рдВрдд рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдореЛрдиреЛрдСрдЪ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕реА # рдореЗрдВ рдХреЛрдб рд▓рд╛рддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдУрдмреАрдЬреАрд╕реА рдореЗрдВ рдпрд╣ рд▓рдЧрднрдЧ рдПрдХ рд╣реА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдПред


рдЪреИрдирд▓ рдЬреБрджрд╛рдИ


рдЬреБрджрд╛рдИ рдХреЗ рд▓рд┐рдП, рдореИрдВ ImageMagik рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдпрд╣ рдХрдорд╛рдВрдб рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреА рд╣реИ:
convert file.png -channel Alpha -separate file.mask.png

рдирд┐рдореНрди рдЖрджреЗрд╢ рдПрдХ рдЬреЗрдкреАрдИрдЬреА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдбреЗрдЯрд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдХреБрдЫ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ (рдлрд╝реЛрдЯреЛрд╢реЙрдк рд╕рд╣рд┐рдд) рдЬрдм рдкреАрдПрдирдЬреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЬреЗрдкреАрдИрдЬреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореЛрдиреЛрдХреНрд░реЛрдо рд░рдВрдЧ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕реЗ RGB рдореЗрдВ рд╕реЗрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░реА-рдЧреБрдгрд╛ рдЕрд▓реНрдлрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реБрдВрджрд░ рд▓реЗрдХрд┐рди рдЧрд▓рдд рддрд╕реНрд╡реАрд░ рджреЗрддрд╛ рд╣реИред
convert file.png -quality 90 -alpha off file.jpg

рдкреНрд░рд╛рдкреНрдд рдлрд╝рд╛рдЗрд▓ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдЧреБрдгрд╡рддреНрддрд╛ 90 рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред JPEG рдХреЗ рд▓рд┐рдП рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ 90% Apple рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдФрд░ рдлрд┐рд▓реНрдореЛрдВ рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЕрдкрдиреЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рджрд░реНрдЬреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЕрдиреБрдХреВрд▓рди


рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдореБрдЦреМрдЯрд╛ рдХреЛ 8-рдмрд┐рдЯ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдкреАрдПрдирдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рд╛рд░реВрдк Optipng рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ www.tinypng.org рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рд╣реИред
рдЬреЗрдкреАрдИрдЬреА рдХреЗ рд╕рд╛рде, рд╕реНрдерд┐рддрд┐ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛рд░реНрдп рддрдХ рд╕реАрдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореИрдВ рд▓реЛрд░реЗрди рдореЗрд░рд┐рдЯ рд╕реЗ рдПрдХ рдЕрджреНрднреБрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬреЗрдкреЗрдЧреНрд░реЗрд╕реНрдХрди рдореЗрдВ рдЖрдпрд╛ рдерд╛, рдПрдХ рдПрдлрдПрдлрдПрдордкреА рдФрд░ рдПрдХреНрд╕ 264 рдПрдирдХреЛрдбрд░ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ ( рдЙрд╕рдХреЗ рдЦрд╛рддреЗ рдкрд░ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╡рд╣ рдПрдХ рд╡рд┐рджреЗрд╢реА рджрд┐рдорд╛рдЧ рдпрд╛ рд╕рд╛рдЗрдмрд░рдиреЗрдЯрд┐рдХ рдорд╕реНрддрд┐рд╖реНрдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИ )ред
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ: рдпрд╣ рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдЧреБрдгрд╛рдВрдХ рдХрд╛ рдЪрдпрди рдХрд░рддреА рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рд╡рд╛рд▓реЗ рдХрд╛ рдЪрдпрди рдХрд░рддреА рд╣реИред рдЖрдк рд╕рдорд╛рди рдЪрд┐рддреНрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд╕рд╛рде 5 рд╕реЗ 15% рд╕реЗ рдЬреАрддрддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЕрдкрдирд╛ рдкреГрд╖реНрда рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдЪрд░реНрдЪрд╛ рдФрд░ рдкрд░реНрд▓ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╡рд┐рд╖рдп : pastebin.com/f78db4bcc

рд╣рд░ рдмрд╛рд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрдорд╛рдВрдб рджрд░реНрдЬ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА:
 #!/bin/bash basefile=${1##*/} maskfile="${basefile%.*}.mask.png" jpegfile="${basefile%.*}.jpg" convert $1 -channel Alpha -separate $maskfile convert $1 -quality 90 -alpha off $jpegfile optipng $maskfile jpegrescan $jpegfile $jpegfile 


рдпрд╣рд╛рдБ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ:

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ 1.8MB рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдореБрдЭреЗ 380Kb рдФрд░ 35Kb рдХреА рджреЛ рдлрд╛рдЗрд▓реЗрдВ рдорд┐рд▓реАрдВред

рдЪрд┐рдкрдХрд╛рдиреЗ


рдЧреНрд▓реВрдЗрдВрдЧ рдЦреБрдж рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рджреЛ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ UIImage рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ CGMmage рдХреЛ рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ WithMask рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (ObjC рдореЗрдВ рдпреЗ CGImageRef рдФрд░ initWithMask, рдХреНрд░рдорд╢рдГ) рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдПрдХ рдирдП UIImage рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИред
  UIImage result; using(UIImage uiimage = UIImage.FromFile(file)) using(UIImage mask = UIImage.FromFile(maskFile)) { CGImage image = uiimage.CGImage; image = image.WithMask(mask.CGImage); result = UIImage.FromImage(image, uiimage.CurrentScale, uiimage.Orientation); } 


рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдореИрдВрдиреЗ * .mask.png рдлрд╝рд╛рдЗрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдФрд░ рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдпрджрд┐ рдпрд╣ рдЧрд╛рдпрдм рд╣реИ, рддреЛ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп UIImage.FromFile () рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реВрдВред

рд▓рд╛рдн




рдиреЗрддреНрд░рд╣реАрди, рдЦреЗрд▓ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред рдЖрдВрдЦ рд╕реЗ рдмрдирд╛рд╡рдЯ рдФрд░ рдЧреНрд▓реВрдЗрдВрдЧ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рджреЗрд░реА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рдорд╛рдкрд╛ред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ 6 (!!) рдореЗрдЧрд╛рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдХрдо рд╣реЛ рдЧрдИ рд╣реИ, рджреЛрдиреЛрдВ .ipa рд░реВрдк рдореЗрдВ, рдФрд░ iTunes рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВред



рдкреАрдПрдирдЬреА рдореЗрдВ рдПрдХ рдЦреЗрд▓ рд╕реЗ рд╕реНрдХреНрд░реАрдиред рдХреЛрдИ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдпрд╛ рд╕рдВрдкреАрдбрд╝рди / рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рдореБрджреНрджреЗ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреА рджреЛрдЧреБрдиреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдереЛрдбрд╝рд╛ рдЙрд▓рдЭрди рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдЬреАрд╡рд┐рдд рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдиреНрдпреВрдирддрдо рд╣реИрдВред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд┐рдзрд┐ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ UIImage рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рдФрд░ NIB / XIB рд╕реЗ рд▓реЛрдб рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдпрд╛ рдмрдирд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИред рднрд▓реЗ рд╣реА рдЖрдк JPEG рдХреЛ 100% рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬрддреЗ рд╣реЛрдВ, рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рд╣рд╛рдирд┐ рдХреЗ рдмрд┐рдирд╛ рдореВрд▓ PNG рд╕реЗ рдЫреЛрдЯрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

PS ImageMagick рдФрд░ Optipng рдХреЛ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ (MacPorts / Fink / Brew) рд╕реЗ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реА рдХрд╛ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Jpegrescan рд╕реНрдХреНрд░рд┐рдкреНрдЯ pastebin рдХреЗ рд╕рд╛рде рдШреВрдорддреА рд╣реИ рдФрд░ jpeg рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ

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


All Articles