Ich versuche, ein Programm in C zu schreiben, die Bitmap-Bilder durch einen bestimmten Faktor skaliert, wenn ich fwrite()
in einer Schleife verwenden, dies zu tun:Wie funktioniert fwrite?
// Go through each pixel of input bitmap
for (int y = 0; y < inWidth; y++)
{
fread(pixel, sizeof(RGBTRIPLE), 1, inBMP);
// Write each pixel to output bitmap (factor) times
for (int z = 0; z < factor; z++)
{
fwrite(pixel, sizeof(RGBTRIPLE), 1, outBMP);
}
}
Alles funktioniert:
Aber wenn ich fwrite()
ohne Schleife:
// Go through each pixel of input bitmap
for (int y = 0; y < inWidth; y++)
{
fread(pixel, sizeof(RGBTRIPLE), 1, inBMP);
// Write each pixel to output bitmap (factor) times
fwrite(pixel, sizeof(RGBTRIPLE), factor, outBMP);
}
ich dieses:
Warum passiert das das?
weil in der Kopfzeile haben Sie die gleiche Größe des Bildes, aber Körper hat mehr Informationen –
In Ihrem zweiten Fall lesen Sie nur 1 'RGBTRIPLE', aber Sie schreiben' Faktor' 'RGBTRIPLE's – MFisherKDX
ist dies [ hilfreich] (https://stackoverflow.com/questions/11569217/how-to-resize-a-bitmap). –