09 Eylül 2013, 22:18 | #1 | |
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0) | C++ BMP Yazma C++ bir BMP resmini açıp her pixelindeki değeri bir matrise atamayı bir önceki yazımda anlatmıştım.Bu yazımda nxn bir matristen nxn boyutunda bir BMP resmi oluşturup kaydeden bir program yazacağız.Bilindiği üzere 24-BMP de renkler 54.bayttan sonra başlar.Yani bizim elimizdeki bu matrisi 54.bayttan sonrasına yazmamız gerekiyor.İlk 54 baytta ise resme ait başlıklar olacaktır.BMP resmi okumak için sadece bazı adresleri okumak yeterliydi ancak yazmak söz konusu ise tüm adreslere olması gereken değeri yazmamız zorunludur.Aksi takdirde görüntüleyici program BMP resmini açamayacaktır.Bu nedenle ilk 54 baytın içerisinde neler olduğunu tek tek bilmemiz gerekmektedir.Aşağıdaki tabloda her adresin içerisinde ne bilgisinin tutulduğu,kaç bit olduğunu ve C++ veri türünü görebilirsiniz.(Burada verilen veri tipleri standart veri tipleridir.Kod içerisinde görülen veri tipleri char=unsigned char,word=unsigned short,dword=unsigned int veri tipleridir.) Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu değerleri bmp dosyasına yazmamız için öncelikle ofstream ile bir bmp dosyası binary olarak açılır.Açılan bu dosyada imleç seekg ile istenen adrese konumlandırılarak adresde tutmamız gereken değerler yazılır.BMP dosyasının boyutu ve satır uzunluğu resmin yüksekliği ve genişliği cinsinden; satır_uzunluğu=genişlik+padding=genislik+(4-(3*genislik)%4) dir.Burada padding 4 çıkabilir.Bu durumda padding anlamını yitirir bu yüzden padding=0 alınır.(Ayrıntılı bilgi için bir önceki yazıma bakabilirsiniz.) dosya_boyutu=satır_uzunluğu*yükseklik+54 bayt dır.İlk 54 baytı yazıldıktan sonra renkler yazılırken dikkat edilmesi gereken bir nokta padding baytlarıdır.Her satır yazıldıktan sonra padding baytı sayısı kadar 0 imlecin bulunduğu yerden itibaren yazılmalıdır.Argüman olarak dosya adını alan ve pixels[m][n] matrisindeki renk değerlerini bu dosyaya bmp formatında kaydeden kod parçası aşağıda verilmiştir. Kod: Kodu kopyalamak için üzerine çift tıklayın!
Bir önceki yazımda bahsettiğim gibi bu kodlarıda hızlandırmak istersek mavi ile yazılı satırlar yerine aşağıdaki satırları kullanmamız daha mantıklı olacaktır. Kod: Kodu kopyalamak için üzerine çift tıklayın!
Alıntı | |
|
Etiketler |
bmp, yazma |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| |
Benzer Konular | ||||
Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
Dosyaya yazma | Cemalizim | C ve C++ | 0 | 19 Temmuz 2008 15:24 |