Menskalakan BufferedImage: Menyelidiki Pensampelan Semula, Bukan Memangkas
Percubaan anda untuk menskala BufferedImage menggunakan kelas Graphics2D mungkin tidak menghasilkan hasil yang diingini disebabkan oleh batasan yang dikenakan oleh kaedah tersebut. Kaedah skala() hanya mengubah konteks grafik semasa tanpa mengubah suai data imej asas.
AffineTransformOp: Penyelesaian Pilihan untuk Pensampelan Semula
Untuk pensampelan semula, kelas AffineTransformOp menyediakan fleksibiliti yang lebih besar dengan membenarkan anda menentukan jenis interpolasi. Interpolasi menentukan cara nilai piksel perantaraan dikira apabila imej diskalakan. Berikut ialah contoh menggunakan AffineTransformOp untuk menskalakan imej:
BufferedImage before = getBufferedImage(encoded); int w = before.getWidth(); int h = before.getHeight(); BufferedImage after = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); AffineTransform at = new AffineTransform(); at.scale(2.0, 2.0); AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR); after = scaleOp.filter(before, after);
Dalam contoh ini:
Iki Utama
Atas ialah kandungan terperinci Bagaimana untuk Menskalakan BufferedImage dengan Betul di Java: Pensampelan Semula vs. Pemotongan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!