рдлрд┐рд░ рд╕реЗ XMP рдлреЗрд╕ рдЯреИрдЧред рд╕рдм рдХреБрдЫ рдЦрд░рд╛рдм рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ

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

рдореВрд▓ рд▓реЗрдЦ: рдПрдХ рдФрд░ рджреЛ ред

рд╕рдм рдХреБрдЫ рд╡рд╣рд╛рдБ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдХреЛрдИ рдЦреБрд╢реА рдирд╣реАрдВ рд╣реИред

рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░:


рдХрд╛рд░реНрдп рд╕рд░рд▓ рд╣реИ - рдлреЛрдЯреЛ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдзрд┐рдХрддрдо рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ред

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

рдХреМрди рднреА рднреНрд░рдорд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ - рдмрд┐рд▓реНрд▓реА рдХрд╛ рд╕реНрд╡рд╛рдЧрддред

рд╕рдорд╕реНрдпрд╛ рдирдВрдмрд░ 1 рдкрд┐рдХреНрд╕ рдлреЗрд╕ рд╕реНрдЯреЛрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХрд╣рд╛рдВ рд╣реИ?
рддреАрди рд╡рд┐рдХрд▓реНрдк:


рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЗрд╖реНрдЯрддрдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рдирд┐рдХрд▓рд╛, рдкрд┐рдХрд╛рд╕ рдХреЗрд╡рд▓ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ: "рд╕рднреА рдЯреИрдЧ рдХреЛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ" рдРрд╕рд╛ рдмрдЯрди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП Google рд▓рд╛рд▓рдЪреА рдерд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдпрд╛ рддреЛ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдкрд┐рдХреИрд╕рд┐рдХ рд╣реИрдВ рдпрд╛ рдмрд╛рд╣рд░реА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

picface
рд▓рдЧрднрдЧ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдХрдИ рдмрд╛рд░ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛, рдФрд░ рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд▓рдЧрднрдЧ 60K рдлрд╝реЛрдЯреЛ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдм рдПрдХ рд▓рдВрдмрд╛ рдФрд░ рдбрд░рд╛рд╡рдирд╛ рд▓рдЧрддрд╛ рд╣реИред

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

рдореИрдВрдиреЗ Google рд╕реЗ рд╣реА рдПрдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ "рдлреЛрдЯреЛ рдореЗрдВ рд╕реНрдЯреЛрд░ рдирд╛рдо рдЯреИрдЧ" рдЪреЗрдХрдмреЙрдХреНрд╕ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде picas рд╕рдВрд╕реНрдХрд░рдг 3.9 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Xmp рдореЗрдВ рд╕рднреА рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рдЧрд╛рд░рдВрдЯреАрдХреГрдд рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдФрд░ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдФрд░ рдлрд┐рд░ рдЙрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрд▓реНрджреА рд╕реЗ, рдмрд╕, рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЛрдЧреЛрдВ рдХреЗ рдЯреИрдм рдкрд░, рдкрд╣рд▓реЗ рдирд╛рдо рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЙрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ 'x' рдХрд░реЗрдВ, рдлрд┐рд░ 'x' рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдирд╛рдо рджреЗрдВред рд╕рднреА рдореИрдВрдиреЗ рдбреЗрдврд╝ рд╕реМ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдорд┐рдирдЯ рд▓рдЧреЗред рдЗрд╕рдХреЗ рдмрд╛рдж, рдкрд┐рдХрд╛рд╕рд╛ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдЗрд╕реЗ рддреБрд░рдВрдд рдмрдВрдж рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЙрд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рджреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рдЕрдЧрд▓реЗ рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдХреНрд╖реЗрддреНрд░рдирд╛рдо рдЯреИрдЧ рдореЗрдВ xmp-mwg-rs рдореЗрдВ picasa рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдирд╛рдореЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ PersonInImage рдФрд░ RegionPersonDisplayName рдЯреИрдЧ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рд╕рднреА рдХреИрдЯрд▓реЙрдЧ рдореЗрдВ рдЦреЛрдЬ рдореЗрдВ рдЗрди рдЯреИрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ Microsoft рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рд╣рдореЗрдВ рдлреЛрдЯреЛ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЗ рдирд╛рдо рджрд┐рдЦрд╛рдПрдЧрд╛ред ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдПрдХреНрд╕рдлрд╝реЙрд▓реНрдЯрд▓ рд╣реИ, рдЬрд┐рд╕реЗ рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

exiftool -RegionName>PersonInImage photo.jpg exiftool -RegionName>RegionPersonDisplayName photo.jpg 


рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдХрдИ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦрддреЗ рд╣реИрдВ


рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ Microsoft рд╕реЗ picas рдорд╛рдирдХ рд╕реЗ рдлреНрд░реЗрдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ, рд╡реЗ рди рдХреЗрд╡рд▓ рдирд╛рдореЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдХреИрд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреБрдЫ рд╡рд░реНрдЧ рдХреЗ рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рд╕реЗ рд▓рдВрдмрд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрдВрджреНрд░ рд╕реЗ рдЕрдиреНрдпред рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХреНрд╕рдлреЛрд▓рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

ExifTool_config_convert_regions
 %Image::ExifTool::UserDefined = ( 'Image::ExifTool::Composite' => { MyRegion => { Require => { 0 => 'RegionInfoMP', 1 => 'ImageWidth', 2 => 'ImageHeight', }, ValueConv => q{ my ($rgn, @newRgns); foreach $rgn (@{$val[0]{Regions}}) { my @rect = split /\s*,\s*/, $$rgn{Rectangle}; my %newRgn = ( Area => { X => $rect[0] + $rect[2]/2, Y => $rect[1] + $rect[3]/2, W => $rect[2], H => $rect[3], Unit => 'normalized', }, Name => $$rgn{PersonDisplayName}, Type => 'Face', ); push @newRgns, \%newRgn; } return { AppliedToDimensions => { W => $val[1], H => $val[2], Unit => 'pixel' }, RegionList => \@newRgns, }; }, }, MyRegionMP => { Require => 'RegionInfo', ValueConv => q{ my ($rgn, @newRgns); foreach $rgn (@{$val[0]{RegionList}}) { my @rect = @{$$rgn{Area}}{'X','Y','W','H'}; $rect[0] -= $rect[2]/2; $rect[1] -= $rect[3]/2; push @newRgns, { PersonDisplayName => $$rgn{Name}, Rectangle => join(', ', @rect), }; } return { Regions => \@newRgns }; }, }, }, ); 1; #end 


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

 exiftool -config ExifTool_config_convert_regions "-regioninfomp\<MyRegionMP"' photo.jpg 


рдЙрд╕рдХреЗ рдмрд╛рдж, рдЪреЗрд╣рд░рд╛ Microsoft Live Photo Gallery рдФрд░ рдЕрдиреНрдп рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реА рдпреЛрдЬрдирд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ


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

рдХреГрдкрдпрд╛ рдХреЛрдб рдХреЛ рди рд╣рд░рд╛рдПрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрддрд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░реЗрдВ, рдпрд╣ рдПрд▓рдЖрд░ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдкреНрд▓рдЧрдЗрди рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рд▓реБрдЖ рдХреЛ рджреЗрдЦрд╛ рдерд╛ред

рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ

Info.lua

 return { LrSdkVersion = 3.0, LrSdkMinimumVersion = 1.3, -- minimum SDK version required by this plug-in LrToolkitIdentifier = 'com.adobe.lightroom.sdk.helloworld', LrPluginName = LOC "$$$/PicasaFaceToTag/PluginName=Picasa Faces to Tags", -- Add the menu item to the Library menu. LrLibraryMenuItems = { { title = "Write Picasa Faces to Tags", file = "PersonInImage.lua"}, }, VERSION = { major=4, minor=1, revision=0, build=831116, }, } 


PersonInImage.lua

 --[[---------------------------------------------------------------------------- ------------------------------------------------------------------------------]] -- Access the Lightroom SDK namespaces. local LrTasks = import 'LrTasks' local LrProgressScope = import 'LrProgressScope' local LrApplication = import 'LrApplication' local catalog = LrApplication.activeCatalog() local photos = catalog:getTargetPhotos() local LrPathUtils = import 'LrPathUtils' local logger = import 'LrLogger'("lr") logger:enable('print') local function faceToTag() --[[Convert faces from picasa xmp tag to microsoft xmp ]] exeFile = LrPathUtils.child( _PLUGIN.path, "exiftool.exe" ) cfgFile = LrPathUtils.child( _PLUGIN.path, "ExifTool_config_convert_regions" ) redirect = LrPathUtils.getStandardFilePath('temp') .. "exiftool.stdout" local total = ( # catalog:getTargetPhotos() ) local exifArgs = {"-b -RegionName \>" .. redirect, --'-overwrite_original "-RegionName\>PersonInImage"', '-overwrite_original "-RegionName\>RegionPersonDisplayName"', '-config '..cfgFile..' -overwrite_original "-regioninfomp\<MyRegionMP"'} local progressScope = LrProgressScope{ title = "Write Picasa Faces to Tags", caption = "Updateting " .. total .. " photos." , } progressScope:setCancelable( true ) local parrent catalog:withWriteAccessDo("Create parrent keyword", function () parrent = catalog:createKeyword("names", {}, false, nil, true) --logger:debug("parrent keyword created: " .. tostring(parrent)) end) for completed, photo in ipairs(photos) do progressScope:setPortionComplete(completed, total) progressScope:setCaption("Updated " .. tostring(completed) .. " of " .. tostring(total) .. " photos") if progressScope:isCanceled() then progressScope:done() break end local path = photo:getRawMetadata('path') logger:debug(path) -- write filename to debug log for i,exifArg in ipairs(exifArgs) do local exeCmd ='"' .. exeFile.." "..exifArg.." "..path .. '"' local status = LrTasks.execute(exeCmd) if io.open(redirect):read() == nil then break end --check is there any names in the file --logger:debug(exeCmd) if status ~= 0 then logger:debug("Error "..exeCmd) progressScope:done() end end for name in io.lines(redirect) do if name ~= nil then -- check is there any pleople on photo logger:debug(name) catalog:withWriteAccessDo("Adding name keywords", function () local keyword = catalog:createKeyword(name, {}, true, parrent, true) logger:debug("keyword created: " .. tostring(keyword)) photo:addKeyword(keyword) --photo:setRawMetadata('personShown', keyword) --doesn't work logger:debug("keyword added: " .. name) end) end end end progressScope:done() end LrTasks.startAsyncTask(faceToTag) 


рд╕рднреА рдирд╛рдо рдЯреИрдЧ "рдирд╛рдо" рдЯреИрдЧ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо xmp рд▓рд╛рдЗрдЯрд░реВрдо рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдмрд╕ рдПрдХ рдлреНрд▓реИрдЯ рд╕реВрдЪреА + рдЯреИрдЧ "рдирд╛рдо" рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП, рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ exiftool.exe рдФрд░ рдЙрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд░рдЦреЗрдВред рдмрд▓реНрдХ рдореЗрдВ рд╣рд░ рдЪреАрдЬ рдЧрд┐рдердм рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ

рдкреНрд▓рдЧрдЗрди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдиреБрдХрд╕рд╛рди рд╣реИрдВ:


рдкреБрдирд╢реНрдЪред рдореИрдВ рджреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдЬреЛ рд▓рдЧрднрдЧ _ рдПрдХ рд╣реА рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдкрд┐рдХ рд╕реЗ рдЪреЗрд╣рд░реЗ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЯреИрдЧ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рдХреЗрд╡рд▓ picasa.ini рд╕реЗ рдЪреЗрд╣рд░реЗ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдПрдХреНрд╕рдПрдордкреА рдореЗрдВ рджрд░реНрдЬ рдЪреЗрд╣рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

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


All Articles