Compréhension approfondie de la « taille de pas » dans le constructeur System.Drawing.Bitmap
Lors de la construction d'un objet System.Drawing.Bitmap, le paramètre "step" représente la distance entre la position de départ d'une rangée de lignes de balayage et la position de départ de la rangée suivante de lignes de balayage en mémoire. Il doit répondre à une condition particulière : il doit être un multiple de 4. Cette exigence provient d'anciennes conceptions de processeurs, qui favorisaient les accès aux données sur 32 bits et exigeaient que les lignes de balayage commencent sur une limite d'adresse de 32 bits (c'est-à-dire un multiple de 4). Si cet alignement n’est pas respecté, il y aura une pénalité de performances lors de la récupération des données.
Bien que les processeurs modernes soient moins sensibles à l'alignement des adresses, la taille du pas est toujours conservée sous la forme d'un multiple de 4 pour des raisons de compatibilité ascendante. Pour tenir compte des situations dans lesquelles la largeur de l'image peut ne pas correspondre exactement à cette exigence, vous pouvez utiliser la formule suivante pour déterminer la taille de pas appropriée :
<code class="language-c#">int bitsPerPixel = ((int)format & 0xff00) >> 8; int bytesPerPixel = (bitsPerPixel + 7) / 8; int stride = 4 * ((width * bytesPerPixel + 3) / 4);</code>
En appliquant cette formule, vous pouvez vous assurer que la taille du pas est un multiple de 4 tout en utilisant efficacement la mémoire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!