IOS рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди

IOS рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп, Xcode рд╕реВрдЯ рд╕реЗ iphoneos- рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдереЛрдбрд╝рд╛ рдЧрд╣рд░рд╛ рдЦреЛрджрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдлрд╛рдЗрд▓реЗрдВ рд╕рдВрдХреБрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдиреНрдп, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдереЛрдбрд╝рд╛ рдХрдо рд╣реЛ рдЧрдП рд╣реИрдВ, рдлрд┐рд░ рднреА рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИрдВред рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХрд╛рд░реНрдп iPhone рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рдмрдирд╛рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рддреЗрдЬреА рд╕реЗ рдкрдврд╝рд╛ рдпрд╛ рдЕрдирдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ iPhone 1 рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд╕рдВрдж рдЖрдП рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ARM 7 рдХреЗ рд╕рд╛рде 1GHz рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИред
рд╕рд░рд▓ рдЕрдиреБрдХреВрд▓рди рдФрд░ MacPorts рд╕реВрдЯ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреА рдорджрдж рд╕реЗ, рдЖрдк рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ PNG рдФрд░ JPG рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░, рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛ, рддреЛ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ред

рдЕрдиреНрд╡реЗрд╖рдг

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдореВрд▓ iphoneos- рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХреНрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЫреЛрдЯреА рд╕реА рдкрд░реНрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рдЬреЛ /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред Xcode 4.3 рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ рдлрд╝реЛрд▓реНрдбрд░ рд╣реЛрдЧрд╛

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрдардиреАрдп рд╣реИ:
print "$SCRIPT_NAME: Converting plists to binary in $dstroot\n"; find( { wanted => \&optimizePlists }, $dstroot ); exit(0) if defined $options and $options =~ /-skip-PNGs/; print "$SCRIPT_NAME: Optimizing PNGs in $dstroot\n"; find( { wanted => \&optimizePNGs }, $dstroot ); 


рдпрд╣рд╛рдВ dstroot рдХреА рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рд╕реЙрд░реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдСрдкреНрдЯрд┐рдордкреНрд▓рд┐рд╕реНрдЯреНрд╕ рдФрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рдкреАрдПрдирдЬреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИрдВред PNG рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП, Apple рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд╕рдВрд╢реЛрдзрд┐рдд pngcrunch рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 my @args = ( $PNGCRUSH, "-iphone", "-f", "0", $name, $crushedname ); if (system(@args) != 0) { print STDERR "$SCRIPT_NAME: Unable to convert $name to an optimized png!\n"; return; } unlink $name or die "Unable to delete original file: $name"; rename($crushedname, $name) or die "Unable to rename $crushedname to $name"; 


Pngcrush рдмрдирд╛рдо OptiPNG

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ -iphone рдХреБрдВрдЬреА рдХреЛ рдХреНрдпрд╛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрдбрд╝реЗ рдФрд░ рдЗрддрдиреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдкрд░реАрдХреНрд╖рд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ pngcrush рдиреЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рджреА рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдо рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рддреЛ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдореБрдЦреНрдп рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд browser.png рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╣реБрдЖ:

Recompressing browser.png
Total length of data found in IDAT chunks = 433949
IDAT length with method 120 (fm 1 zl 9 zs 1) = 512501
Best pngcrush method = 120 (fm 1 zl 9 zs 1) for browser_iphone.png
(18.10% IDAT increase)
(18.11% filesize increase)


CPU time used = 2.569 seconds (decoding 0.040,
encoding 2.490, other 0.039 seconds)


-Iphone рд╕реНрд╡рд┐рдЪ рдХреЗ рдмрд┐рдирд╛, рд╕реНрдерд┐рддрд┐ рдмреЗрд╣рддрд░ рдереА рдФрд░ рдлрд╝рд╛рдЗрд▓ рдЕрднреА рднреА рдЫреЛрдЯреА рдереА:

Recompressing browser.png
Total length of data found in IDAT chunks = 433949
IDAT length with method 1 (fm 0 zl 4 zs 0) = 740769
IDAT length with method 2 (fm 1 zl 4 zs 0) = 611778
IDAT length with method 3 (fm 5 zl 4 zs 1) = 485419
IDAT length with method 9 (fm 5 zl 2 zs 2) = 743935
IDAT length with method 10 (fm 5 zl 9 zs 1) = 427514
Best pngcrush method = 10 (fm 5 zl 9 zs 1) for browser_tmp.png
(1.48% IDAT reduction)
(1.47% filesize reduction)


CPU time used = 3.949 seconds (decoding 0.176,
encoding 3.766, other 0.007 seconds)


рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рднреА рд╣реИ - рдЬреАрдкреАрдПрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдСрдкреНрдЯрд┐рдкрдВрдЧ ред MacPorts рд╕реЗ, рдпрд╣ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрддрд╛ рд╣реИ
sudo port install optipng

рдпрд╣рд╛рдБ рдЙрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред
** Processing: browser_opti.png
1024x1024 pixels, 4x8 bits/pixel, RGB+alpha
Input IDAT size = 433949 bytes
Input file size = 434043 bytes

Trying:
zc = 9 zm = 8 zs = 1 f = 5 IDAT size = 427390

Selecting parameters:
zc = 9 zm = 8 zs = 1 f = 5 IDAT size = 427390

Output IDAT size = 427390 bytes (6559 bytes decrease)
Output file size = 427484 bytes (6559 bytes = 1.51% decrease)


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ pngcrush рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рднреА рдЫреЛрдЯрд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХрд╛рдо рдХреА рдЧрддрд┐ рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реИред рдХреБрдЫ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЕрдВрддрд░ рдФрд░ рднреА рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдкрд░рд┐рдгрд╛рдореА PNG рдлрд╛рдЗрд▓реЗрдВ iPhone рдФрд░ iPad рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреБрд▓рддреА рд╣реИрдВ, рдЙрдирдореЗрдВ рдХреЛрдИ рднреА рджреГрд╢реНрдп рд╡рд┐рдХреГрддрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рдЧрддрд┐ рдЦреЛрд▓рдиреЗ рдХрд╛ рдЕрдВрддрд░ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ рдпрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдСрдкреНрдЯрд┐рдкрд┐рдВрдЧ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ рд╣рдо PNG рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрде рдХреЗ рд╕рд╛рде рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ:
 my $PNGCRUSH_NAME = "optipng"; my $PNGCRUSH = "/opt/local/bin/$PNGCRUSH_NAME"; 

OptimPNGs рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдореЗрдВ, рдХреЗрд╡рд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрджрд▓рддрд╛ рд╣реИред рдореБрдЭреЗ -o2 рдФрд░ -f0 рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛:
 my @args = ( $PNGCRUSH, "-o2", "-f0", $name, "-out", $crushedname ); 


рдмреЗрд╢рдХ, рд╣рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдирд╛ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЙрд╕реА рд╕рдордп рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЕрдзрд┐рдХрд╛рд░ рд╣реИрдВред

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

JPEG рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрдХреНрд╕рд░ EXIF тАЛтАЛрдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рд╡рд┐рднрд┐рдиреНрди рдХрдЪрд░рд╛ рдЬреЛ рдлреЛрди рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рдореЛрдб рдФрд░ рдЕрдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЕрдВрддрд░ рднреА рд╣реИред рдпрд╣ jpegoptim рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЬреЛ рд╕реНрд╡рдпрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛ рддреНрдпрд╛рдЧ рджреЗрдЧрд╛, рд╣рдлрд╝рдореИрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░реЗрдЧрд╛ рдФрд░ рд╕рдорд╛рди рдЧреБрдгрд╡рддреНрддрд╛ рд╕реНрддрд░ рдкрд░ рдЗрд╖реНрдЯрддрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЫрд╡рд┐ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдХрдо рдХрд░ рджреЗ, рдлрд┐рд░ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд╕рдВрдХреБрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдЗрд╕реЗ MacPorts рд╕реЗ рднреА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

sudo port install jpegoptim

рдпрд╣ рдХреЗрд╡рд▓ iPhoneos- рдЕрдиреБрдХреВрд▓рди рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред
рд╢реАрд░реНрд╖рдХ рдореЗрдВ:
 my $JPGCRUSH_NAME = "jpegoptim"; my $JPGCRUSH = "/opt/local/bin/$JPGCRUSH_NAME"; 

рд╢рд░реАрд░ рдореЗрдВ:
 print "$SCRIPT_NAME: Optimizing jpgs in $dstroot\n"; find( { wanted => \&optimizeJPGs }, $dstroot ); 

рдирдИ рд╕реБрд╡рд┐рдзрд╛:
 sub optimizeJPGs { my $name = $File::Find::name; if ( -f $name && $name =~ /^(.*)\.jpg$/i) { my @args = ( $JPGCRUSH, "--strip-all", $name ); if (system(@args) != 0) { print STDERR "$SCRIPT_NAME: Unable to convert $name to an optimized jpg!\n"; return; } print "$SCRIPT_NAME: Optimized JPG: $name\n"; } } 

рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЕрдиреБрдХреВрд▓рди рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдФрд░ рдиреНрдпреВрдирддрдо рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ:

jpegoptim --strip-all english.jpg
english.jpg 320x480 24bit JFIF [OK] 66466 --> 59686 bytes (10.20%), optimized.


рдЕрдм рдпрд╣ Xcode рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ iphoneos-рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реЛрдЧреА, рдФрд░ рдкрд░рд┐рдгрд╛рдо 10-15% рдХрдо рд╣реЛрдЧрд╛ред

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ (JPEG, JFIF, JPE, JIF, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдХрдореА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐ред рд╡реИрд╕реЗ рднреА, рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдХрд╛рдлреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ PNG, JPEG, CAF рдФрд░ рдЕрдиреНрдп рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
sqlite3 database.sqlite vacuum;

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

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреАрдПрдирдЬреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рджреЛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрдк рдЕрдиреНрдп рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ)ред рдкрд╣рд▓рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рд╣рд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡рд┐рдзрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рд╕рдВрдХрд▓рдХ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдПрдкреАрдХреЗрдЯреВрд▓) рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд░рдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреИрд▓реЗрдЯреЗрдб рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреВрд░реНрдг-рд░рдВрдЧ рд╡рд╛рд▓реЗ PNG рднреА рдЫреЛрдЯреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╡рд░реНрдХрд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ Res / drawable рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЗрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдмрд┐рди / Res / drawable рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдЦреЗрдВред рдмреЗрд╢рдХ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХреМрд╢рд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдпрд╣ рдЖрдИрдУрдПрд╕ рд╡рд┐рдХрд╛рд╕ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИ: RGBA8888 рд╕реЗ RGB565 рдпрд╛ RGBA4444 рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░рдВрдЧ рд╕рд░рдЧрдо тАЛтАЛрдХреЛ рдХрдо рдХрд░реЗрдВред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЖрдХрд╛рд░ рджреЛрдиреЛрдВ рдХреЗ рдХрд╛рд░рдг рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЦреАрдВрдЪреА рдЧрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдлреА рдХрдореА рдЖ рд╕рдХрддреА рд╣реИред рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреА рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд┐рдЦреА, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред

рд╕рдорд╛рдкреНрдд iphoneos- рдЕрдиреБрдХреВрд▓рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкреБрдирд╢реНрдЪ рдкрд╛рда: paste2.org/p/2045147

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


All Articles