2010-06-29 12 views
6

Katıştırılmış PNG grafiklerini (ImageOptim aracını kullanarak) optimize ederek bir SWF dosyasının dosya boyutunu daha da azaltmaya çalışıyordum. Sürpriz olarak, bu herhangi bir etki elde edilememiştir, bu yüzden iki deney Görüntüleri yarattı:Flex: Flex derleyici, gömülü PNG varlıklarını otomatik olarak optimize ediyor mu?

Original (433883 bayt)

Optimized (273723 bayt)

basit bu varlıkların ya katıştırma ActionScript projesi, derlenmiş SWF boyutu ~ 274kb'dir. Hangisi şu soruyu sormaktadır: Flex, derleme zamanı sırasında gömülü PNG varlıklarını optimize eder mi? Varsa, optimizasyon devam ediyor mu? Tek başına SWF sıkıştırması nedeniyle olamaz, çünkü görüntüleri sıkıştırmak hiç dosya boyutunu küçültmez. İşte

tamlığı için kod var:

package 
{ 
    import flash.display.Sprite; 

    public class SizeTest extends Sprite 
    { 
     [Embed("/assets/original.png")] 
     private var ImageAsset:Class; 

     public function SizeTest(){ 
     } 
    } 
} 
+0

dosyasını daha büyük hale getirir. böylece kötü bir fikir. Tutulma kullanıyor musunuz? eğer öyleyse, Project> Export Release build'i deneyin. SWF boyutu – Treby

+0

azalacaktır Bu aptalca bir soru olabilir, ancak kök uygulamanızda SizeTest'e bir başvuru da dahil mi? Değilse, sizeTest derlenmez ve görüntü gömülmez. –

+0

@Treby Evet, bunun farkındayım. Dışa aktarılan SWF, serbest bırakma modunda derlenmiştir. @Marty Yukarıdaki sınıf listesi *, * kök uygulamasıdır. Bu sadece Flex'te basit bir ActionScript projesidir. – bummzack

cevap

4

cevap evet, esnek derleyici otomatik olarak sıkıştırmak yok veri Sıkıştırma algoritmalarından biri (muhtemelen ZLIB) ve sıkıştırılmamış veriye erişebilmeniz için önce diğer tarafa (flash player) şeffaf olarak sıkıştırır.

Bir ByteArray'ı bir SWF'ye katıyordum ve baytlar büyük bir alana (200 KB) sahip olsa da, bir SWF'ye gömüldüğünde 30 KB'ye dönüşür ve bu, ByteArray.compress("zlib") kullanarak elle sıkıştırmakla neredeyse aynı sonuçları üretir.

Daha sonra PNG/JPEG bitmap'lerini elle sıkıştırmayı denedim ve [Embed] etiketini (gömülü bir resim olarak 168 KB ve sıkıştırılmış bir resim olarak 168 KB) kullanarak katıştırmaktan daha büyük çıktı. Flex derleyicinin gömülü veri sıkıştırmasını işlemesine izin vermek aslında ByteArray tarafında kendi numaralarınızı yapmaya çalışmaktan daha iyidir.

Düzenleme: Sorunu PNG gömülmesine yanıtlamak için, esnek derleyici/flash player'da neler olduğunu anlatmak zor. Doğru belgeler için bilinmesine rağmen, Adobe birçok "belgesiz özellik" ile de bilinir. Spesifik sorunuz en iyisi bir facebook mimarı (örneğin, Tinic Uro) veya bir adobe evangelistine (örn. Lee Brimelow) gönderilir, bazıları facebook'a kolayca erişebilir (bkz. Bu list). Bir görüntüyü sıkıştırmak

+0

İlginç. Bir png zaten sıkı sıkıştırılmış ve zlib kullanarak bu kadar küçük almamalı mıyım? – bummzack

+0

@bummzack - Güncellenmiş gönderiyi görün ve evet, her dosya biçimi için en uygun sıkıştırmayı kullanıyor gibi görünüyorlar; büyük olasılıkla önemli geliştirmeler yapmadığı sıkıştırmayı kapatıyorlar. Ne yaparsanız yapın, varsayılan Flex [Embed] yapılandırmasının her zaman en iyi sonucu verdiğini buldum. Sanırım Adobe gerçekten parlıyor bir yer. –

+0

Cevabınız için teşekkür ederiz. Bir cevabı 'kabul edildi' olarak nasıl işaretleyeceğimi biliyorum ve bunu yapacağım, ancak ilk sorumu tam olarak cevaplamamasına rağmen. ByteArray * tarafında hiçbir şey yapmıyorum. Ben özel görüntü sıkıştırma a * çok * yapan bir PNG sıkıştırma aracı (http://imageoptim.pornel.net/) kullanıyordum (bkz: http://optipng.sourceforge.net/pngtech/optipng.html). "Optimize edilmemiş" yerine optimize edilmiş görüntünün kullanılması, derlenmiş "swf" dosyasının dosya boyutunu küçülmez. Bu nedenle Flex derleyicisinin bu PNG sıkıştırma tekniklerinden herhangi birini uygulayıp uygulamadığını merak ediyorduk (linke bakınız). – bummzack

2

swf formatı vardır onlar 24bit png ve gri tonlama alfa maskesi bölünmüş olsun 32 bit PNG (Alfa kanalında olanlar) için içten özel biçim alfa maskesi JPEG sıkıştırılmış olur. Flex Builder'ın bu tür bir optimizasyon yapıp yapmadığından emin değilim, en azından eski bir sürümde PNG'nin tümüyle optimize edilmediği gömülü olduğunu hatırlıyorum.

Yine de, sen Joa Ebert yönettiği "Reducer" kontrol etmelidir swfs gömülü görüntüleri optimize edebilirsiniz bir araç arıyorsanız: kullanarak http://blog.joa-ebert.com/2009/08/08/reducer/

+0

Cevabınız için teşekkür ederiz. Flash IDE'deki PNG sıkıştırmasının farkındayım. Ancak AFAIK bu sadece Flash IDE ve Flex için geçerli değildir. Ben de Joa Ebert en Reducer biliyorum ... ama derlenmiş SWF dosya boyutu temelde her iki görüntüler için aynıdır neden hala ben de aynı şeyi merak ediyorum – bummzack

+0

(sadece birkaç bayt tarafından kapalı) merak ediyorum. Kuantizasyon tablosunun boyutunu azaltarak PNG'leri optimize ettim. Sonuç swfs benzer dosya boyutları verir. –