рдХреНрдпрд╛ рдПрдХрддрд╛ рдзреАрдореА рд╣реИ? рд╕рд╛рд╡рдзрд╛рдиреА LINQ

рдЕрдХреНрд╕рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХрддрд╛ рдзреАрдореА рд╣реИред рд▓реЗрдХрд┐рди рдХрд┐рддрдирд╛? рдореИрдВ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдЖрд░реНрдЯ рдПрдбрд┐рдЯрд░ рд╣реИред рдЙрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ GIF рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрд╛ред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдСрдкрд░реЗрд╢рди GIF рдХреЛрдбрд┐рдВрдЧ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╣реИ LZW рдХрдореНрдкреНрд░реЗрд╢рди рдЕрд▓реНрдЧреЛрд░рд┐рдердоред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдПрдХрддрд╛ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддреА рд╣реИред

рдЫрд╡рд┐

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреВрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреНрдпреЛрдВ рд▓рд┐рдЦрдиреА рдереАред рд╣рд╛рдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, System.Windows.Media.Imaging рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдЬрд┐рд╕рдореЗрдВ рдЕрджреНрднреБрдд GifBitmapEncoder рд╢рд╛рдорд┐рд▓ рд╣реИ, рдПрдХрддрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ GIF рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдм рдкрд░ рд▓реЗрдЦ рдкрдврд╝рд╛, рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд▓рд┐рдпрд╛ рдФрд░ рд▓рд╛рдареА рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ GIF рдмрдирд╛рдпрд╛ред

рдмреЗрд╢рдХ, рдореИрдВрдиреЗ рдХрдВрд╕реЛрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦрдирд╛ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдореИрдВ рдЗрд╕ рдХреНрд╖рдг рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛, рдпрд╣ рдЙрдмрд╛рдК рдерд╛ рдФрд░ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдВрдмрд╛ рдерд╛, рдЗрд╕рдореЗрдВ 3 рджрд┐рди рд▓рдЧреЗред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдерд╛, рдЖрдорддреМрд░ рдкрд░ рдЦреЗрд▓ рдХрд░ рд░рд╣реЗ рдереЗред рдареАрдХ рд╣реИ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рддреИрдпрд╛рд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 200 рдлреНрд░реЗрдо рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг "рднрд╛рд░реА" рдЬреАрдЖрдИрдПрдл рдФрд░ 256x256 рдХрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди 15 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд░рд╛рдЗрдЬрд╝реЗрди 7, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореЗрд░реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░)ред рдмрд╣реБрдд рдХреБрдЫ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдФрд░ рд╕рдЬреНрдЬрди рдХреЗ рд╣рд╛рде рд╕реЗ рдореИрдВрдиреЗ рд╕рдВрдкреАрдбрд╝рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдмрдирд╛рдпрд╛ (рдЬреИрд╕реЗ рдПрдХрддрд╛ рдХреЛ рдзрд╛рдЧреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдкрд░реАрдХреНрд╖рдг GIF 5 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдиреНрдХреЛрдб рд╣реЛ рдЧрдпрд╛ред рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛!

рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрддрд╛ рдореЗрдВ рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ред рдЯреЗрд╕реНрдЯ GIF рдХреЛрдбрд┐рдВрдЧ рдореЗрдВ 120 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдореЛрдб рдореЗрдВ (рд╣рд╛рдВ, рдереНрд░реЗрдб рдЗрди рдпреВрдирд┐рдЯреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпреВрдЖрдИ рдХреЛ рдЫреВрдПрдВ) рдПрдХ gif рдХреЛ 180 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдПрдиреНрдХреЛрдбрд┐рдВрдЧред Facepalmред

Google - рд╕рдорд╕реНрдпрд╛, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдЖрдо рд╣реИред рдЗрд╕реА рддрд░рд╣ рдХреА рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХрддрд╛ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛрдб 10-20 рдмрд╛рд░ рдзреАрдорд╛ рдЪрд▓рддрд╛ рд╣реИред рдпрд╣ рдХрдерд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдФрд░ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдзреВрдорд┐рд▓ рд╕рдВрдкрд╛рджрдХ рдУрд╡рд░рд╣реЗрдб рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдЕрд╕реЗрдВрдмрд▓реА (рд╡рд┐рдВрдбреЛрдЬ, рдПрдВрдбреНрд░реЙрдЗрдб) рдореЗрдВ рд╕реНрдерд┐рддрд┐ рд╕рдорд╛рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, .exe рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ, рдпрд╣ 20% рддрдХ рдереЛрдбрд╝рд╛ рддреЗрдЬрд╝ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдкрд╛рдардХреЛрдВ рд╕реЗ рд╕рд╡рд╛рд▓ - рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ?

GIF рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ, рдЬреЛ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ: GitHub ред рдкреБрд╕реНрддрдХрд╛рд▓рдп C # рд╕рдВрд╕реНрдХрд░рдг 6 рдФрд░ .NET 3.5 рдХреЗ рддрд╣рдд рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рддрд╛рдХрд┐ рдПрдХрддрд╛ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛ рд╕рдХреЗред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ .NET 4.0 рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдереНрд░реЗрдбрдкреВрд▓ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

UPD: рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рд╣реЛ рдЧрдпрд╛: рддрд╛рд▓реЗ рдХреЗ рд╕рд╛рде рджреЛрдиреЛрдВ рдзрд╛рдЧреЗ, рдФрд░ рдПрдХ рд╡рдХреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ - рд▓рд┐рдирдХреНрдпреВ рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рдиреЗ рдХрд╛ рд╕рдВрдЪрд╛рд▓рдиред рдЕрд░реНрдерд╛рддреН, рдРрд╕рд╛ рдСрдкрд░реЗрд╢рди LZW рд╕рдВрдкреАрдбрд╝рди рдХреЗ рджреМрд░рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХреЗрд╡рд▓ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдБрдЪ рд╣реИ)ред

рдЫрд╡рд┐

рд╣рдо рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ - 5 рдПрдордПрд╕ред
рдПрдХрддрд╛ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ - 2100 рдПрдордПрд╕ред

UPD: рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рднрд╛рдЧ LINQ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдЯреЗрдиреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ Array.IndexOf рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдЧреБрдирд╛ рдзреАрдорд╛ рд╣реИред LINQ рдмрдврд╝рд┐рдпрд╛ рд╣реИ, рдпрд╣ рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рдмрдирд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрдбрд╝реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реЗ рд▓рд╛рдЧреВ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдирд╣реАрдВред рдпрд╣ рдПрдХрддрд╛ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ LINQ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред

UPD: LZW рдХрдореНрдкреНрд░реЗрд╢рди рдЕрд▓реНрдЧреЛрд░рд┐рдердо рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛, рдбрд┐рдХреНрд╢рдирд░реА рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреАрдЬрд╝ рдХреЛ рд╣рдЯрд╛рдпрд╛ред рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ рдмрдбрд╝реЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП LINQ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рдореИрдВрдиреЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдирд╣реАрдВ рдЫреБрдЖред рдФрд░ рд╕рдм рдХреБрдЫ рдЙрдбрд╝ рдЧрдпрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рднреАред рдмреЗрд╢рдХ, рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЧрддрд┐ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдмрдирд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред

рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд╕рднреА рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WNeZRoS рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж! рд╣рд╛рд▓рд╛рдВрдХрд┐ LINQ рдореЗрдВ рдмреНрд░реЗрдХ рдХрд╛ рдХрд╛рд░рдг рдЕрдирд╕реБрд▓рдЭрд╛ рд╣реИред

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


All Articles