วันนี้ครูต้องการให้ฉันช่วยแทนที่ภาพถ่ายมากกว่า 200 ภาพด้วยพื้นหลังสีขาว ภาพถ่ายส่วนใหญ่เป็นสีน้ำเงินและสีแดง
ใช้ PS? เลขที่! ใช้ Java! -
ใช่ปฏิกิริยาแรกของฉันคือการใช้ Java และค้นหาซอร์สโค้ดเพื่อรับพิกเซลรูปภาพบนอินเทอร์เน็ต หลังจากย้ายฉันทำมันขึ้นมาและใช้เวลาครึ่งนาทีในการประมวลผลมากกว่า 200 ภาพ
/*** ฟังก์ชั่น:* แบทช์แปลงไฟหมึกสีฟ้า-ก้นเป็นสีขาว-ก้น* ส่วนใหญ่สามารถประมวลผลได้ในหลายร้อยหรือหลายพันภาพ* @author Zhao Junfu**/คลาสสาธารณะ imagecolordemo {public Static Main (String args []) / *** แสดงรายการรูปภาพในไดเรกทอรีและรับอาร์เรย์*/ ไฟล์ [] files = dir.listfiles (); / *** ข้ามอาร์เรย์*/ สำหรับ (int x = 0; x <files.length; x ++) {/ *** กำหนดอาร์เรย์ RGB เนื่องจากรูปแบบ RGB ของภาพถูกแสดงโดยสาม 0-255 เช่นสีขาวคือ (255,255,255)*/ int [] / *** สตรีมบัฟเฟอร์ที่ใช้ในการประมวลผลภาพ*/ bufferedImage bi = null; ลอง { / *** ใช้ imageio เพื่ออ่านภาพลงในบัฟเฟอร์* / bi = imageio.read (ไฟล์ [x]); } catch (exception e) {e.printstacktrace (); } / *** รับความยาวและความกว้างของภาพ* / int width = bi.getWidth (); ความสูง int = bi.getheight (); int minx = bi.getMinx (); int miny = bi.getMiny (); System.out.println ("ในกระบวนการ:"+ไฟล์ [x] .getName ()); /*** นี่คือพิกเซลของภาพ เนื่องจากสีด้านหลังของภาพจะต้องประมวลผลสีของพิกเซลที่ระบุจะต้องถูกแทนที่ด้วยสีเป้าหมาย* นี่คือวงชั้นที่สองการสำรวจแต่ละพิกเซลบนความยาวและความกว้าง*/ สำหรับ (int i = minx; i <width; i ++) {สำหรับ (int j = miny; j <ความสูง / ** * รับค่า RGB บนพิกเซลที่ระบุ (i, j), */ int pixel = bi.getRgb (i, j); / *** ดำเนินการบิตแยกต่างหากเพื่อรับค่าบน rgb*/ rgb [0] = (พิกเซล & 0xff0000) >> 16; rgb [1] = (พิกเซล & 0xff000) >> 8; rgb [2] = (พิกเซล & 0xff); /*** ดำเนินการเปลี่ยนสีฉันต้องการเปลี่ยนฐานสีน้ำเงินเป็นฐานสีขาวดังนั้นฉันจะตรวจสอบว่าค่า RGB ในภาพอยู่ในช่วงสีน้ำเงินของพิกเซล* /ถ้า (rgb [0] <155 && rgb [0]> 0 && rgb [1] <256 && rgb [1]> 105 && คำพิพากษาที่ผ่านไปจากนั้นเปลี่ยนพิกเซลเป็นสีขาว */ bi.setrgb (i, j, 0xffffff); }}} system.out.println ("/t การประมวลผลเสร็จสมบูรณ์:"+ไฟล์ [x] .getName ()); System.out.println (); /*** บันทึกวัตถุบัฟเฟอร์เป็นไฟล์ใหม่*/fileOutputStream ops = ใหม่ fileOutputStream (ไฟล์ใหม่ ("d:/d5/"+x+". jpg")); imageio.write (bi, "jpg", ops); ops.flush (); ops.close (); - ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น