ดาวน์โหลดแอพนี้!
https://play.google.com/store/apps/details?id=com.peenats.ayana.colorlens
นี่คือแอปแก้ไขรูปภาพสำหรับ Android มันสามารถทำให้ภาพเหมือนภาพ CHEKI คุณสามารถตกแต่งภาพถ่ายของคุณด้วยฟิลเตอร์เลนส์สี กรอบรูป และเส้นขยุกขยิกด้วยนิ้ว
ฉันใช้ Java สำหรับแอพนี้ ฉันยังใหม่กับภาษาจาวา ดังนั้นฉันจึงตัดสินใจทำโปรเจ็กต์ Java ซึ่งเป็นความท้าทาย อย่างไรก็ตาม ในงาน I/O 2019 Google ประกาศว่าการพัฒนา Android จะใช้ Kotlin เป็นหลักมากขึ้น ดังนั้นฉันจึงตัดสินใจสร้างแอป Android โดยใช้ Kotlin ในครั้งต่อไป Google I/O ได้ประกาศ Android Jetpack ใหม่ ฉันไม่ได้ใช้ฟังก์ชันใด ๆ ในโปรเจ็กต์นี้จาก Jetpack แต่ฉันต้องติดตามฟีเจอร์ทั้งหมดของ Jetpack ให้ทัน
? การตัด
มันถูกใช้งานโดยไลบรารี SimpleCropView ฉันเพิ่งตั้งค่า cropMode, frameScale และ ShowMode มันใช้งานง่ายและสวยงามมาก! นี่คือรหัส
mCropView = findViewById(R.id.cropImageView);
mCropView.setCropMode(CropImageView.CropMode.SQUARE);
mCropView.setInitialFrameScale(0.75f);
mCropView.setGuideShowMode(CropImageView.ShowMode.SHOW_ON_TOUCH);
?ฟิลเตอร์เลนส์สี
นี่คือฟังก์ชั่นหลักในแอพนี้ ในการสร้างฟิลเตอร์สี ฉันใช้เมทริกซ์ของ rgba เช่น นี่คือโค้ดสำหรับเปลี่ยนสีเป็นสีแดง
float[] red_colour_matrix = {
3f, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 1, 0, 0,
0, 0, 0, 1, 0
};
?กรอบ
ฉันกังวลเป็นพิเศษกับเฟรมเหล่านี้ ฉันอยากจะนำเฟรมเหล่านี้มาใกล้กับเฟรม CHEKI ของจริง ฉันสร้างเฟรมเหล่านี้โดยใช้ Sketch จากนั้นฉันก็ส่งออกมันตามความหนาแน่นที่ต้องการ (1x, 1.5x, 2x, 3x, 4x) จากนั้นฉันก็ตั้งค่าโฟลเดอร์ความหนาแน่นแต่ละโฟลเดอร์ ไดเร็กทอรีที่วาดได้จะมีลักษณะเหมือนภาพด้านล่าง
?ดูเดิล
ฉันต้องการสร้างแอปตกแต่งรูปภาพให้สามารถใช้นิ้วขีดเขียนได้ มันไม่ยากที่จะนำไปใช้แต่ซับซ้อนนิดหน่อย ในการวาดเส้นบนอุปกรณ์ด้วยนิ้ว ฉันต้องแทนที่วิธี onTouchEvent (สามารถตรวจจับการกระทำของนิ้วได้ 3 แบบ: ลง เลื่อน และขึ้น) ฉันเพิ่มเส้นทางและระบายสีลงใน ArrayList ทุกครั้งที่จมน้ำ จากนั้นฉันก็แทนที่วิธี onDraw เพื่อวาดเส้นทางภายใน ArrayList บน Canvas ฉันเรียกวิธี onDraw ทุกครั้งที่วาดแต่ละบรรทัด
@Override
public boolean onTouchEvent( MotionEvent event) {
float x = event.getX();
float y = event.getY();
if (event.getAction() == MotionEvent.ACTION_DOWN) {
startPath(x, y);
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
updatePath(x, y);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
}
invalidate();
return true;
}
เหิน
การดึงภาพอย่างรวดเร็วและมีประสิทธิภาพ แอปนี้ใช้ Glide
SimpleCropView
กำลังครอบตัดรูปภาพจากแกลเลอรี ฉันใช้ไลบรารีนี้ เหตุผลที่ฉันตัดสินใจใช้สิ่งนี้ก็คือห้องสมุดแห่งนี้มีมุมมองที่เรียบง่ายและสวยงาม นอกจากนี้ยังใช้งานง่าย