Özel bir bitmap biçimini (MVTec Halcon HImage) almamı ve onu C# içinde bir System.Drawing.Bitmap dosyasına dönüştürmemi gerektiren bir uygulama yazıyorum.Neden System.Drawing.Bitmap yapıcısında "geçmeli" 4'ün katları olmalı?
Bana yardımcı olmak için bana verilen tek özel işlevler, "alma işaretçisi" işlevinin kullanılması dışında dosyaya yazmamı içerir.
Bu işlev harika, bana piksel verileri, genişlik, yükseklik ve görüntünün türü için bir işaretçi veriyor.
new System.Drawing.Bitmap(width, height, stride, format, scan)
Ben Bu gibi bir sorun olabilir 4. katları olan bir "adım" belirtmek gerekir:
Sorunum kurucuyu kullanarak benim System.Drawing.Bitmap oluştururken olmasıdır Fonksiyonumun hangi bitmap ile vurulacağından emin değilim. Sanırım 111x111 piksele sahip bir bitmap ile sona ererim, bu işlevi görüntüye sahte bir sütun eklemek veya 3 sütunu çıkarmak dışında kullanmam mümkün değildir.
Bu sınırlamayı aşmamın bir yolu var mı?
Doğru yanıt budur; artı bir bütün gün. Burada, "adım" hesaplaması hakkında daha fazla bilgi bulabilirsiniz: http://stackoverflow.com/questions/1983781/why-does-bitmapsource-create-throw-an-argumentexception/1983886#1983886. – jason
Yani, büyük olasılıkla görüntü formatımı değiştirmeyi denemeliyim. Şu anda, her bir pikseli tek bir bayt olarak depolayan bir şey kullanıyorum. Bunu söyledikten sonra, bu bitmap yapıcısını kullanamayacağımı farzediyorum, çünkü sadece tek bir bayt alıp, kazıklı bir renk haritasına dayanmayan görüntü tipi yok. –
Doğru, 8bpp bir palet gerektiriyor. GDI + onları iyi desteklemez, size herhangi bir sıkıntı vermez. Başlamak için mevcut bir 8bpp resmi yükleyerek sorunu çözebilirsiniz. Palet girişlerini çalabilir veya doğru boyuta sahipse doğrudan kilitleyebilirsiniz. Veya bir MemoryStream'de sentezleyin. –