Cara Mengekstrak Tatasusunan Pixel daripada Imej
Di Java, mendapatkan data piksel daripada BufferedImage sebagai tatasusunan int[][] membolehkan akses terus kepada piksel tertentu. Berikut ialah beberapa cara untuk mencapai matlamat ini:
Menggunakan Kaedah getRGB() BufferedImage
Kaedah ini menggabungkan nilai alfa, merah, hijau dan biru ke dalam satu int dan mengembalikannya. Untuk mengekstrak komponen warna individu, anda perlu mendapatkan semula topeng warna dan mengalihkan nilai dengan sewajarnya. Pendekatan ini agak mudah tetapi bukan yang paling berkesan.
Mengakses Terus Tatasusunan Piksel
Dengan menggunakan kod berikut, anda boleh mengakses tatasusunan piksel secara terus sebagai bait tatasusunan:
byte[] pixels = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData();
Kaedah ini jauh lebih pantas daripada kaedah getRGB(), terutamanya untuk besar imej.
Perbandingan Prestasi
Untuk menunjukkan perbezaan prestasi, ujian telah dijalankan menggunakan imej 12,000 x 12,000 piksel. Jadual berikut membandingkan masa pelaksanaan kedua-dua kaedah:
Method | Average Time |
---|---|
getRGB() | 16 seconds |
Direct Access | 1.5 seconds |
Kesimpulan
Mengakses tatasusunan piksel secara terus menggunakan kelas DataBufferByte ialah pendekatan yang disyorkan untuk piksel yang cekap manipulasi. Berbanding dengan kaedah getRGB(), ia menawarkan faedah prestasi yang ketara, terutamanya apabila berurusan dengan imej besar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekstrak Data Piksel dengan Cekap sebagai Array daripada BufferedImage di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!