2013-04-10 20 views
11

Görüntüleri bir MOV dosyasına dönüştürüyorum ve bana ilginç bir şey geldi. Renk bileşeni başına bit piksellerimi, piksel başına bit ve satır başına baytları günlüğe kaydettim.Görüntümün Satır Başına Her Bayt başına Bayttan daha büyük olan Bayt sayısı neden Genişlik?

Resim Genişliği: 300, Yükseklik:

İşte
NSLog(@"Image width: %d, Height: %d", CGImageGetWidth(image), CGImageGetHeight(image)); 
NSLog(@"BPC: %d \ BPP: %d \ ByPR: %d", CGImageGetBitsPerComponent(image), CGImageGetBitsPerPixel(image), CGImageGetBytesPerRow(image)); 

benim çıkış var: 300 (herşey olarak beklenen) BPC: 8 (renk başına 8 bit ... şimdiye kadar iyi) İşte benim kod BPP: 32 (32 = 4 bileşen ARGB * renk başına 8 bit ... var) ByPR: 1216 (satır başına 300 px * satır başına 4 bayt = satır başına 1200 bayt)

Neden 1216 bayt kaydediliyor satır başına, 1200 değil mi? Bu arada, bu sadece bir şok değil. Tampon boyutları için bu sayılara dayanan bir video oluşturduğumda çalışır. Satır başına 1200 bayt ile oluşturduğumda, biraz uyuşma efekti elde ediyorum.

Düşünceler ?!

+0

Aslında ben de aynı şeyi yapmalıyım. Görüntüleri mov'a dönüştüren kodu bana verebilir misin? Eğer yapamazsan tamam. E-postam [email protected] Süper minnettar olur. – anivader

+0

Biraz farklı ihtiyaçlarım var: yeni böbrek ve para. Herhangi bir miktar. Paylaşabiliyorsan çok iyi olur. Tha-a-anks! –

cevap

19

Sistem, önbellek çizgisi hizalaması nedeniyle görüntülerin muhtemelen her satır için 64 baytlık bir kat olmasını, muhtemelen daha iyi performans göstermesini istiyor. 1200, 64'ün bir katı değildir, ancak 1216'dır.

+0

İlginç ... herhangi bir nedenle neden, ya da bu oldukça keyfi mi? Sadece ayırma arabellekleri yapmak daha kolay? Ayrıca, özellikle CGImage için bunu gösterebilecek herhangi bir belgeleriniz var mı? Teşekkürler! – Herm

+1

Dediğim gibi, bunun önbellek çizgisi davranışından kaynaklandığını farzediyorum. CPU her zaman bir önbellek hattını her zaman yükler. Sizi işaret edecek herhangi bir belgeyi hatırlamıyorum. –

+0

Bunu yapmasını engellemenin bir yolu var mı? Bytesperrow'u ayarlayabilir miyim? – anivader

İlgili konular