Erhöhung der Auflösung und die Verringerung der Größe eines Bildes in Java
Als ich das erste mal gefragt, ich enthalten so viel Informationen, wie ich konnte, da ich nie weiß, was jemandem helfen, wenn Sie geben können, m eine Lösung, aber aus den Antworten, es scheint, ich habe nicht mein Punkt klar.
Ich lasse den ursprünglichen text am unteren Ende und kürzen diese. Ich hoffe, dass macht es klar.
Arbeite ich mit Bildern wieder zu mir aus einem anderen Programm. Ich kann ein Bild das ist, zum Beispiel, 8x10 bei 72 DPI oder das gleiche Bild mit 16x20, auch 72DPI.
Arbeite ich in Java. Was ich gerne tun möchte, ist nehmen Sie die 16x20 Bild und Größe ändern. Wenn möglich, würde ich gerne nur die Datei ändern, so dass anstatt 16x20 72DPI, es ist 8x10, bei 144DPI.
Ich weiß, dass es immer noch die gleiche Anzahl von Pixel, aber die Zuschauer sagen, wie groß ein Bild ist und was die DPI ist und auch einige öffnen Sie ein Bild auf seine volle Größe, so dass ich lieber, Sie behandeln die 16x20 als ein kleineres Bild mit einer höheren Auflösung.
Kann ich das in Java? Verliere ich meine Daten? Wie würde ich es tun - kann ich nur ändern Sie die Metadaten in das png-oder jpg-Datei?
-----(ursprüngliche Frage hier)-----
Ich gesehen habe ein paar Fragen, die diesem nahe kommen, aber das ist ein wenig anders.
Ich weiß, Sie können verringern Sie die Bildauflösung mit einem Bild in Java (auch hier). Jede Suche, die ich getan habe wurde besorgt mit Verringerung der Auflösung eines Bildes.
Habe ich das umgekehrte problem. Ich arbeite mit einem Bild, dass ich immer wieder in 72DPI. Der Vorteil ist, ich kann erhöhen Sie die Größe des Bildes, so konnte ich die Größe 100%, 200%, 400% und so weiter. Alle Bilder sind 72DPI, also wenn ich mit 200% zoom, dann öffnen Sie das Bild in einem viewer und machen es die gleiche Größe wie die 100% - Bild, ich sehe eine bessere Auflösung.
Zur Verdeutlichung - ich bin immer ein Bild aus jemand anderes, könnte es sein, generieren von PDF-oder Bild, aber ich bin gegeben das Bild aus einem anderen Programm. Egal was ich mache, ist dieses Bild mit 72DPI. Ich kann das nicht ändern, aber ich kann geben Sie die Größe auf 200% und es kommt immer noch zurück, 72DPI, nur doppelt so groß und mit mehr Details.
Ich bin kein Grafik-Experte und dies ist das erste mal, dass ich getan habe, eine Programmierung, die Grafiken verwendet. Die Ausgabe könnte jpg-oder png-Format, also das format ist nicht so wichtig. (Ich könnte wahrscheinlich auch andere Formate verwenden, wenn nötig.)
Lassen Sie uns sagen, das ursprüngliche Bild ist ein Foto - 8" x 10", und bei 72 DPI. Wenn ich Frage für einen 200% zoom, bekomme ich eine 16" x 20" Bild 72DPI.
Kann ich innerhalb von Java ändern, die größeren 16" x 20" 72DPI-Bild zu einem 144DPI Bild 8" x 10", ohne Daten zu verlieren? In anderen Worten, die doppelte DPI, aber schneiden Sie die Größe in der Hälfte?
Und, am wichtigsten ist, kann ich es tun, ohne die Auflösung? (Ich würde denken, dass getan werden kann.)
- Dies ist wahrscheinlich besser geeignet für Fotografie
- Ich würde das berücksichtigen, aber ich muss es tun in Java, das ist nicht ein Foto-Problem. Kann es sein, als Teil eines Java-Programms?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, wenn du eine 8x10 72dpi Bild und Fragen Sie nach einem 200% zoom Sie erhalten eine 16x20 bei 36 dpi. Sie können nicht magisch erhöht die Bildauflösung.
Was zählt, ist die Gesamtzahl der Pixel im Bild. Die angegebenen DPI-Wert ist nur, was der DPI-Wert wird in einer bestimmten Größe. Nehmen Sie Ihre 8x10 Bild mit 72dpi. Es hat 576x720 Pixel. Wenn Sie den zoom auf 200% haben Sie immer noch die gleiche Anzahl von Pixel, aber jetzt werden Sie verteilt über das doppelte der linearen Abmessungen, also die einzelnen Pixel größer sein wird. Einige software wird versuchen, erhöhen die Auflösung durch Interpolation Pixel, d.h. die Bildung neuer Pixel durch Mittelwertbildung der nächsten Nachbarn. Dies kann der Eindruck einer höheren Auflösung, aber das Bild enthält keine Daten mehr. Es hat immer den Effekt der Enthärtung das Bild, vor allem keine scharfen Kanten oder Linien.
Wenn Sie reduzieren die Größe eines Bildes ohne Neuberechnung, Sie erhöhen die gedruckt oder angezeigt, die Auflösung, aber das Bild wird kleiner. Für das gleiche Bild, die Erhöhung der DPI-bis zu 144 werden, verringern Sie die Bildgröße, 4x5.
Dies ist schwierig, da, wie so vieles in Java, man kann nicht einfach etwas zugreifen, die in einer einfachen Weise. Java nicht verfolgen DPI, aber es hat Punkte pro millimeter. Auch ein weiterer Teil, der verwirrend ist, dass Sie nicht ändern können diese Art von Informationen in ein Bild oder in ein BufferedImage. Können Sie nur ändern, wenn Sie schreiben ein BufferedImage durch einen ImageWriter.
War ich in der Lage, dies zu tun. Wie gesagt, konnte ich angeben, den zoom auf das Bild, Sie war kehrte zu mir zurück. Egal welche zoom-Stufe, die Ausgabe wurde mit 72 DPI. Mein Ziel war es, mindestens 300 dpi. Ich angegebenen einen Zoomfaktor von 400%. Also, auf einer 8" breiten Bild von 72 DPI, das kam mir wieder ein 32" Bild mit 72 DPI. Alle die ich tun musste, war, geben Sie einen DPI-Wert von 288 (72 x 4) überschreiben die Standard-Auflösung von 72 DPI ich zu tun hatte und dann, als es geschrieben wurde, das Bild hatte die gleiche Anzahl von Pixel, aber war als getan bei 288 DPI statt 72 DPI.
Hier ist ein code-snippet:
//Angenommen es gibt bereits einen ImageWriter iw
//Parameter setzen und die info
//Von hier aus, schreiben Sie einfach Datei mithilfe eines ImageOutputStream