Wie man die Größe eines Bildes in C# zu einem gewissen hard-disk-Größe?
Wie man die Größe eines Bildes ein Bild, das in C# zu einem gewissen hard-disk-Größe, wie 2MiB? Gibt es einen besseren Weg, als Versuch und Irrtum (auch wenn es die Ungefähre, natürlich).
Irgendeinen bestimmten keywords zu suchen, wenn Sie versuchen, die Lösung finden Sie auf der web?
- Welche Art von Bild?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt davon ab, was Sie bereit sind zu ändern
Es ist schwer zu erraten, was die endgültige Größe sein wird, aber wenn Sie wissen, ein Ausgangspunkt, Sie erhalten eine ziemlich gute Schätzung. Die Reduzierung der Größe wird wohl proportional sein, die Verringerung der bits pro pixel wird wahrscheinlich auch proportional sein.
Wenn Sie ändern das format, die Komprimierung oder die Qualität, es ist wirklich nur eine Vermutung -- hängt stark vom Bildinhalt ab. Sie könnte wahrscheinlich ein gutes Angebot, indem Sie versuchen, es auf einem corpus von Bildern, die dem entspricht, was Sie denken, Sie werden sehen.
Berechnen Sie eine Ungefähre Angabe der Stufe für das Bild, indem Sie die ursprüngliche Bildgröße geteilt durch die Anzahl der Pixel:
Habe ich ein Bild, das 369636 bytes und 1200x800 Pixel, so verwendet er ~0.385 bytes pro pixel.
Ich habe eine kleinere version, die ist 101111 bytes und 600x400 Pixel, so verwendet er ~0.4213 bytes pro pixel.
Beim verkleinern eines Bildes Sie werden sehen, dass es in der Regel enthält etwas mehr Informationen pro pixel, in diesem Fall etwa 9% mehr. Je nach Art der Bilder und wie viel Sie verkleinern wollen, sollten Sie in der Lage sein, um den Durchschnitt zu ermitteln, wie viel Informationen/pixel-ration erhöht (c), so dass Sie berechnen können, eine Ungefähre Größe der Datei:
Daraus können Sie extrahieren Sie eine Formel für, wie groß Sie ein Bild zu machen, zu erreichen, eine bestimmte Datei-Größe:
Diese erhalten Sie ziemlich nah an die gewünschte Dateigröße ein. Wenn Sie möchten, näher zu kommen, können Sie die Größe des Bildes um die berechnete Größe, komprimieren Sie Sie und berechnen Sie ein neues Byte-pro-pixel-Wert aus der Datei, die Größe, die Sie bekam.
Ich erreichte dies durch eine Verringerung der Qualität, bis erreichte ich meine gewünschte Größe.
NB: Erfordert das hinzufügen der System.Zeichnung Referenz.
Wenn es ein 24-bit-BMP ich denke, Sie würden es tun müssen, so etwas wie dieses:
Wenn Sie ein anderes BMP-Typ, wie 8-bit-BMP auch in den header-Abschnitt wird es sein, mehr Daten unter Angabe der tatsächlichen Farbe jeder Wert von 0 bis 255 vor, also müssen Sie subtrahieren mehr von der Gesamtgröße einer Datei, bevor Sie die binäre Suche.
Konvertieren, Reduzieren (Iterativ, In-Memory) & Download (MVC)