1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng dụng chỉnh sửa ảnh trên nền tảng android

81 521 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 81
Dung lượng 2 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hầu như tất cả những smartphone sử dụng hệ điều hành Android đều rất dễ sử dụng, đơn giản trong tùy biến theo sở thích cá nhân, cũng như có rất nhiều ứng dụng để thỏa mãn nhu cầu của từn

Trang 1

 LỜI CẢM ƠN

Lời đầu tiên, em xin gửi lời cảm ơn sâu sắc đến thầy giáo Th.S Bùi Anh Tú – bộ môn công nghệ phần mềm đã định hướng và tận tình giúp đỡ, động viên em trong quá trình thực hiện đồ án Em xin chân thành cảm ơn thầy!

Em xin cảm ơn những người bạn và gia đình đã động viên, giúp đỡ để em phấn đấu vượt qua khó khăn trong quá trình học tập và rèn luyện tại Trường Đại học Công nghệ Thông tin và Truyền thông

Đồ án tốt nghiệp là cơ hội để em có thể áp dụng, tổng kết lại những kiến thức mà mình được học Đồng thời, em rút ra được những kinh nghiệm thực tế và quý giá trong suốt quá trình thực hiện đồ án Sau một thời gian khá dài, em tập trung công sức cho đồ án và làm việc tích cực, đặc biệt nhờ sự chỉ đạo và hướng dẫn tận tình của thầy Bùi Anh Tú cùng với các thầy cô trong trường Đại học Công nghệ thông tin và truyền thông – Đại học Thái Nguyên, đã giúp em hoàn thành đồ

án một cách thuận lợi và gặt hái được những kết quả như mong muốn

Cuối cùng, em xin cảm ơn tất cả thầy cô giáo Trường Đại học Công nghệ Thông tin và Truyền thông đã dạy dỗ, chỉ bảo những kiến thức, tri thức khoa học

và những bài học kinh nghiệm trong suốt quá trình học tập, rèn luyện tại trường, đề

em chuẩn bị thật tốt kiến thức và hành trang trong cuộc sống

Kính chúc quý thầy cô mạnh khỏe, tiếp tục đạt được nhiều thắng lợi trong nghiên cứu khoa học và sự nghiệp trồng người

 Em xin chân thành cảm ơn!

 Sinh viên

 Hoàng Duy Hoàng



Trang 2

 LỜI CAM ĐOAN

Em xin cam đoan toàn bộ nội dung trong đồ án này là do tự em đọc và nghiên cứu các tài liệu, khảo sát các phần mềm hiện nay Từ đó viết ra cơ sở lý

thuyết và xây dựng chương trình “Ứng dụng chỉnh sửa ảnh trên nền tảng Android”.

Mọi nguồn tham khảo, trích dẫn trong đồ án đều được ghi rõ nguồn gốc

Người cam đoan

Hoàng Duy Hoàng

Trang 3

MỤC LỤC

LỜI CẢM ƠN 1

LỜI CAM ĐOAN 2

MỤC LỤC 3

DANH MỤC HÌNH 6

MỞ ĐẦU 8

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 10

1.1 Tổng quan về hệ điều hành android 10

1.1.1 Đặc điểm 11

1.1.2 Kiến trúc tổng quát của hệ điều hành Android 13

1.1.3 Chu kỳ ứng dụng android 16

1.2 Các thành phần giao diện trong android 17

1.2.1 View 17

1.2.2 ViewGroup 17

1.2.3 LinearLayout 18

1.2.4 FrameLayout 18

1.2.5 AbsoluteLayout 18

1.2.6 RetaliveLayout 18

1.2.7 TableLayout 19

1.2.8 ImageView 19

1.2.9 ListView 19

1.2.10 TextView 20

1.2.11 EditText 20

1.3 Activity và Intent 21

1.3.1 Activity 21

Trang 4

1.3.2 Intent 21

1.4 Tìm hiểu về bitmap 23

1.4.1 Bitmap trong Android 23

1.4.2 Màu sắc trong Android 23

1.4.3 Thao tác với điểm ảnh trong bitmap 24

1.5 Một số thuật toán xử lý ảnh trong android 25

1.5.1 Convolution matrix 25

1.5.2 Neon 27

1.5.3 Emboss 28

1.5.4 TV Screen 28

1.5.5 Sketch 29

1.5.6 Invert 29

1.5.7 Smoothing 29

1.5.8 Gaussian blue 29

1.5.9 Grayscale 30

1.5.10 Sharpen 30

1.5.11 Color lighten 31

CHƯƠNG 2: KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG 32

2.1 Khảo sát thực tế 32

2.2 Đặc tả bài toán 32

2.3 Đặc tả chức năng 33

2.3.1 Chức năng load ảnh 33

2.3.2 Chức năng xử lý ảnh 33

2.4 Các biểu đồ hệ thống 35

2.4.1 Biểu đồ use case 35

2.4.2 Biểu đồ trình tự 38

2.4.3 Biểu đồ hoạt động 39

2.4.4 Biểu đồ class 40

Trang 5

2.5 Luồng sự kiện 42

2.5.1 Luồng sự kiện cho chức năng load ảnh 42

2.5.2 Luồng sự kiện chức năng edit 43

2.5.3 Luồng sự kiện chức năng styles 43

2.5.4 Luồng sự kiện chức năng text 43

2.5.5 Luồng sự kiện chức năng stickers 44

2.5.6 Luồng sự kiện cho các chức năng share, save, wallpaper 44

CHƯƠNG 3: DEMO ỨNG DỤNG 45

3.1 Một vài hình ảnh của ứng dụng 45

3.2 Danh sách các màn hình 52

KẾT LUẬN 54

TÀI LIỆU THAM KHẢO 55

Trang 6

DANH MỤC HÌNH

Hình 1.1-2 Hệ điều hành Android 10

Hình 1.3 Kiến trúc tổng quát 13

Hình 1.4 Tầng ứng dụng 13

Hình 1.5 Application Framework 14

Hình 1.6 Libraries 14

Hình 1.7 Android Runtime 15

Hình 1.8 Linux kernel 15

Hình 1.9 Chu kỳ sống thành phần 16

Hình 1.10 Chu kỳ sống của Activity 16

Hình 1.11 Bố trí các widget sử dụng LinearLayout 18

Hình 1.12 Bố trí trong RelativeLayout 19

Hình 1.13 Minh hoạ cho một ListView 20

Hình 1.14 Truyền dữ liệu giữa 2 Activity 22

Hình 1.15 Các thuộc tính của Intend 22

Hình 1.16 Các Action đã được định nghĩa sẵn trong Intend 22

Hình 1.17 Công thức xử lý ảnh ma trận nhân chập 25

Hình 1.18 Công thức ma trận nhân chập 27

Hình 1.19 Mô tả ảnh neon 27

Hình 1.20 Mô tả ảnh Emboss 28

Hình 1.21 Mô tả hiệu ứng Shapen 30

Hình 2.1 Quá trình xử lý một bức ảnh 34

Hình 2.2 biểu đồ use case tổng quát 35

Hình 2.3 Biểu đồ usecase edit 36

Hình 2.4 Biểu đồ usecase Styles 36

Hình 2.5 Biểu đồ usecase Stickers 37

Hình 2.6 Biểu đồ usecase text 37

Trang 7

Hình 2.7 Biểu đồ trình tự chức năng load ảnh 38

Hình 2.8 Biểu đồ trình tự chức năng xử lý ảnh 38

Hình 2.9 Biểu đồ hoạt động cho chức năng load ảnh 39

Hình 2.10 Biểu đồ hoạt động cho chức năng xử lý ảnh 39

Hình 2.11 Biểu đồ class tổng quát 40

Hình 2.12 Biểu đồ class edit 40

Hình 2.13 Biểu đồ class Text 41

Hình 2.14 Biểu đồ class Sticker 41

Hình 2.15 Biểu đồ class Style 42

Hình 3.1 Màn hình chức năng load ảnh 45

Hình 3.2 Màn hình hiển thị ảnh và các chức năng xử lý ảnh 46

Hình 3.3 Tạo hiệu ứng Neon 47

Hình 3.4 Tạo hiệu ứng Pseudo HDR 47

Hình 3.5 Chọn các filter cho bức ảnh 48

Hình 3.6 Tăng giảm độ sáng 48

Hình 3.7-8 Chọn các stickers cho bức ảnh 49

Hình 3.9-10 Chọn background và frame cho ảnh 50

Hình 3.11-12 Nhập văn bản và chọn màu chữ 51

Hình 3.13-14 Share và save ảnh 52

Trang 8

 MỞ ĐẦU

Ngày nay, hệ điều hành Android ra đời và trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới, với sự kế thừa những ưu việt của các hệ điều hành ra đời trước và sự kết hợp của nhiều công nghệ tiên tiến nhất hiện nay Những ưu điểm dễ thấy nhất của Android chính là khả năng tùy biến nhanh chóng,

dễ làm quen, ứng dụng hỗ trợ phong phú, tương thích với đa cấu hình phần cứng của các nhà sản xuất Dù đã hay chưa từng sử dụng smartphone Android thì ta cũng không cần quá lo lắng về việc thay đổi Hầu như tất cả những smartphone sử dụng hệ điều hành Android đều rất dễ sử dụng, đơn giản trong tùy biến theo sở thích cá nhân, cũng như có rất nhiều ứng dụng để thỏa mãn nhu cầu của từng người dùng Đồng thời Android có mã nguồn mở đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên được điều chỉnh và phân phối Android một cách tự do

Cùng với sự phát triển không ngừng của công nghệ thông tin, các siêu phẩm điện thoại thông minh ra đời, các thiết bị di động như điện thoại, máy tính bảng, máy nghe nhạc, selfie ngày càng phát triển mạnh mẽ, tạo nên cuộc cạnh tranh giữa các hãng phát triển di động Ngày càng nhiều sản phẩm di động thông minh ra đời được nâng cấp và cải thiện rất lớn về hiệu suất cũng như cấu hình cao đáp ứng nhu cầu của người sử dụng

Bên cạnh những chức năng quan trọng của một chiếc smartphone, một chức năng cũng không thể thiếu đó là chiếc camera chụp ảnh, để lưu trữ lại những kỷ niệm đẹp, những khoảnh khắc ý nghĩa Những chiếc smartphone ngày càng được cải thiện cả về tính năng lẫn chất lượng phần cứng, camera trên điện thoại cũng ngày một hoàn thiện hơn, áp dụng những công nghệ xử lý ảnh tiên tiến để cho ra những bức ảnh đẹp và trân thực nhất, đáp ứng nhu cầu chụp ảnh, selfie với chất lượng hình ảnh cao

Tuy nhiên, những chiếc camera mặc định của điện thoại thường chỉ cho ra

Trang 9

những hình ảnh thô và không làm hài lòng người sử dụng, đôi khi họ muốn biến những bức ảnh kém nổi bật sau khi chụp trở nên lung linh và sắc nét hơn, với những hiệu ứng biến đổi màu sắc, hiệu ứng khung ảnh, làm cho bức ảnh trở nên khác biệt Và họ cần một ứng dụng khác biệt có thể thay thế ứng dụng mặc định

mà hệ điều hành cung cấp có thể tùy chỉnh bức ảnh sau khi chụp theo sở thích của mỗi người

Bởi vậy trước nhu cầu và lợi thế đó, em quyết định nghiên cứu và xây dựng

ứng dụng: “Xây dựng ứng dụng chỉnh sửa ảnh trên nền tảng android.”

Ứng dụng có thể cho phép mọi người chỉnh sửa các hiệu ứng, biển đổi tăng sáng tối cho bức ảnh, có thể tạo style, thêm text hoặc các sticker ngộ nghĩnh cho bức ảnh Bên cạnh đó sau khi xử lý ảnh xong, người dùng có thể chia sẻ lên mạng

xã hội, tạo wallpaper cho điện thoại của mình

Nội dung báo cáo gồm các phần chính sau đây:

Chương 1: Cơ sở lý thuyết

Chương 2: Khảo sát và phân tích thiết kế hệ thống

Chương 3: Demo ứng dụng

Trong quá trình xây dựng đề tài không thể tránh được những thiếu sót, em mong được những ý kiến đóng góp, phê bình của các thầy, cô để bài của em được hoàn thiện hơn Sự phê bình, góp ý của quý thầy cô sẽ là nhưng bài học kinh nhiệm quý báu cho công việc thực tế của em sau này

Em xin trân thành cảm ơn!

Sinh viên

Hoàng Duy Hoàng

Trang 10

 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

 Tổng quan về hệ điều hành android.

Hình 1.1-2 Hệ điều hành Android

Android là nền tảng phần mềm dựa trên mã nguồn mở Linux OS (Kernel 2.6) được thiết kế dành riêng cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh hay máy tính bảng, nhằm xây dựng các ứng dụng hỗ trợ mà người sử dụng cần đến

Được xây dựng trên một nền tảng mở, và một bộ thư viện đa năng, mạnh

mẽ với nguyên lý mở, Android đã nhanh chóng được cộng đồng lập trình viên di

Trang 11

động hưởng ứng mạnh mẽ

Nền tảng Android tích hợp nhiều tính năng nổi bật:

 Android là một hệ điều hành nhân Linux, đảm bảo sự tương tác với các phần cứng, quản lý bộ nhớ, điều khiển các tiến trình tối ưu cho các thiết bị di động

 Bộ ứng dụng khung cho phép sử dụng lại và thay thế các thành phần riêng lẻ

 Máy ảo Dalvik được tối ưu cho các thiết bị di động, chạy các ứng dụng lập trình trên ngôn ngữ Java

 Các thư viện cho phát triển ứng dụng mã nguồn mở bao gồm SQLite, WebKit, OpenGL và trình quản lý đa phương tiện

 Hỗ trợ các chuẩn đa phương tiện phổ biến, thoại trên nền GSM, Bluetooth EDGE, 3G và Wifi

 Hỗ trợ Camera, GPS, la bàn, máy đo gia tốc…

 Bộ phát triển ứng dụng SDK đầy đủ gồm thiết bị giả lập, công cụ sửa lỗi, tích hợp với Eclipse SDK

di động hoàn hảo

 Tính ngang hàng của các ứng dụng

Với Android, không có sự khác nhau giữa các ứng dụng điện thoại cơ bản với ứng dụng của bên thứ ba Chúng được xây dựng để truy cập như nhau tới một

Trang 12

loạt các ứng dụng và dịch vụ của điện thoại Với các thiết bị được xây dựng trên nền tảng Android, người dùng có thể đáp ứng đầy đủ các nhu cầu mà họ thích Chúng ta có thể đổi màn hình nền, kiểu gọi điện thoại, hay bất kể ứng dụng nào Chúng ta thậm chí có thể hướng dẫn điện thoại chỉ xem những ảnh mình thích.

 Dễ xây dựng ứng dụng

Android cung cấp bộ thư viện giao diện lập trình ứng dụng đồ sộ và các công cụ để viết các ứng dụng phức tạp Ví dụ, Android có thể cho phép người phát triển biết được vị trí của thiết bị và cho phép các thiết bị giao tiếp với nhau để có thể tạo nên mạng xã hội chia sẻ ngang hàng rộng khắp

Trang 13

So sánh với các hệ điều hành cùng loại khác:

Bảng 1.1 So Sánh Các Hệ Điều Hành Điện Thoại Thông Minh

Android

Google Android là nền tảng mở, cho phép người dùng có thể tùy biến nền tảng theo ý thích, hơn nữa lại có một Liên minh thiết bị cầm tay mở hậu thuẫn, Google Android đang là đối thủ xứng tầm của iPhone của Apple

Google đang tích cực mở rộng cộng đồng phát triển các ứng dụng cho Android Bộ công cụ phát triển phần mềm (SDK) đầy đủ, hỗ trợ đa nền (Linux, Windows hay Mac OS) do chạy trên máy ảo Java Thư viện ngày càng hoàn thiện, dễ dàng cho người lập trình

Hệ điều hành phân mảnh, không thống nhất trên các thiết bị, giới hạn về độ 'mở' và nhiều

lỗ hổng bảo mật là những yếu điểm của Android OS

Windows

Phone

Có thư viện API khá giống với API trên Win32, các công cụ hỗ trợ lập trình đầy đủ với Visual Studio, điều này làm cho những người phát triển trên Win32 không mất công tìm hiểu lại các API và các công cụ lập trình

Sự có mặt của iPhone

và Android là hai trở ngại lớn với Windows Mobile Hai nền tảng này đang hoàn thiện và được người dùng rất ưa chuộng

Trang 14

Màn hình cảm ứng đa điểm: iPhone

sử dụng hoàn toàn bằng cảm ứng và không sử dụng các nút Với iPhone ta

có thể điều khiển trên màn hình kể cả việc trượt của các ngón tay Ta có thể phóng to ảnh bằng cách trượt hai ngón tay ra xa và thu nhỏ bằng cách ngược lại

Bộ cảm nhận gia tốc: Những phản

ứng nhanh chóng của bộ cảm nhận gia tốc thay đổi độ phân giải màn hình từ dọc sang ngang tự động khi ta đặt điện thoại nằm ngang Điều này làm sinh động thêm cho các trò chơi Âm thanh, hình ảnh hoàn hảo

Việc lập trình trên cho iPhone phải thực hiện trên hệ điều hành Mac,

do đó không phải ai cũng có thể lập trình cho iPhone Hơn thế, nếu muốn đưa chương trình ra máy thật người lập trình phải trả một khoản phí lập trình, điều này làm giảm tính cạnh tranh so với các đối thủ khác

 Kiến trúc tổng quát của hệ điều hành Android

Mô hình sau thể hiện môt cách tổng quát các thành phần của hệ điều hành Android

Trang 15

1.1.2.2 Application Framework

Trang 16

Hình 1.5 Application Framework

Kiến trúc của Android khuyến khích khái niệm thành phần sử dụng lại, cho phép công bố và chia sẻ các Activity, Service, dữ liệu, với các ứng dụng khác với quyền truy cập được quản lý bởi khai báo

 android.view: View là lớp giao diện người dùng cơ bản nhất Tất cả giao diện người dùng được tạo ra đều phải sử dụng một tập các View để cung cấp cho các thành phần tương tác người dùng

 android.widget: Xây dựng dựa trên gói View Những lớp widget những thành phần giao diện được tạo sẵn được sử dụng để tạo nên giao diện người dùng

 android.telephony: Các API điện đàm cung cấp khả năng tương tác trực

Trang 17

tiếp với tầng điện thoại trong các thiết bị, cho phép tạo, nhận, theo dõi các cuộc gọi, tình trạng các cuộc gọi và tin nhắn SMS.

 Android Runtime

Hình 1.7 Android Runtime

Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java

có thể hoạt động Phần này có 2 bộ phận tương tự như mô hình chạy Java trên máy tính thường Thứ nhất là các thư viện lỗi (Core Library), chứa các lớp như JAVA

IO, Collections, File Access Thứ hai là một máy ảo java(Dalvik Virtual Machine)

1.1.2.5 Linux Kernel

Android sử dụng nhân Linux 2.6 làm nhân cho các dịch vụ hệ thống như bảo mật, quản lý bộ nhớ, quản lý tiến trình (xử lý tiến trình, đa luồng), ngăn xếp mạng và trình điều khiển thiết bị (giao tiếp USB, giao tiếp hồng ngoại, không đây, v.v…) Nhân Linux này cũng có vai trò như một lớp trừu tượng giữa phần cứng và phần mềm

Trang 18

 USB Driver : Điều khiển bàn phím.

 Wifi Driver : Chịu trách nhiệm về việc thu phát sóng wifi

 Audio Driver : Điều khiển các bộ thu phí phát âm thanh, giải mã các tính hiệu dạng audio thành tín hiệu số và ngược lại

 Chu kỳ ứng dụng android

 Chu kỳ sống thành phần

Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ lúc bắt đầu khởi tạo và đến thời điểm kết thúc Giữa đó, đôi lúc chúng có thể là active hoặc inactive, hoặc là trong trường hợp activies nó có thể visible hoặc invisible

Hình 1.9 Chu kỳ sống thành phần.

Các trạng thái của chu kỳ sống

Trang 19

Hình 1.10 Chu kỳ sống của Activity

Một Activity chủ yếu có 3 chu kỳ chính sau:

 Active hoặc running: Khi Activity là được chạy trên màn hình Activity này tập trung vào những thao tác của người dùng trên ứng dụng

 Paused: Activity là được tạm dừng (paused) khi mất focus nhưng người dùng vẫn trông thấy

 Stopped: Nếu nó hoàn toàn bao phủ bởi Activity khác Nó vẫn còn trạng thái và thông tin thành viên trong nó

 Chu kỳ sống của ứng dụng

Trong một ứng dụng Android có chứa nhiều thành phần và mỗi thành phần đều có một chu trình sống riêng Và ứng dụng chỉ được gọi là kết thúc khi tất cả các thành phần trong ứng dụng kết thúc Activity là một thành phần cho phép người dùng giao tiếp với ứng dụng Tuy nhiên, khi tất cả các Activity kết thúc và người dùng không còn giao tiếp được với ứng dụng nữa nhưng không có nghĩa là ứng dụng đã kết thúc Bởi vì ngoài Activity là thành phần có khả năng tương tác người dùng thì còn có các thành phần không có khả năng tương tác với người dùng như là Service, Broadcast receiver

1.1.3.3 Thời gian sống của ứng dụng

Bảy phương thức chuyển tiếp định nghĩa trong chu kỳ sống của một Activity Thời gian sống của một Activity diễn ra giữa lần đầu tiên gọi onCreate() đến trạng thái cuối cùng gọi onDestroy()

1.1.3.4 Thời gian hiển thị của Activity

Visible lifetime của một activity diễn ra giữa lần gọi một onStart() cho đến khi gọi onStop() Trong suốt khoảng thời gian này người dùng có thể thấy activity trên màn hình, có nghĩa là nó không bị foreground hoặc đang tương tác với người dùng

 1.2 Các thành phần giao diện trong android

Trang 20

ViewGroup thực ra chính là View hay nói đúng hơn thì ViewGroup chính

là các widget Layout được dùng để bố trí các đối tượng khác trong một screen

Trang 21

 AbsoluteLayout

Layout này được sử dụng để bố trí các widget vào một vị trí bất kì trong layout dựa vào 2 thuộc tính toạ độ x, y Tuy nhiên, kiểu layout này rất ít khi được dùng bởi vì toạ độ của các đối tượng luôn cố định và sẽ không tự điều chỉnh được

tỷ lệ khoảng cách giữa các đối tượng

Trang 22

 1.2.6 RetaliveLayout

Layout này cho phép bố trí các widget theo một trục đối xứng ngang hoặc dọc Để đặt được đúng vị trí thì các widget cần được xác định một mối ràng buộc nào đó với các widget khác

Hình 1.12 Bố trí trong RelativeLayout

1.2.7 TableLayout

Layout này được sử dụng khi cần thiết kế một table chứa dữ liệu hoặc cần

bố trí các widget theo các row và column Chẳng hạn như, giao diện của một chiếc máy tính đơn giản hoặc một danh sách dữ liệu

 1.2.8 ImageView

Được dùng để thể hiện một hình ảnh Nó cũng giống như ImageButton, chỉ

Trang 23

khác là không có hình dáng của một cái button

 1.2.9 ListView

Được sử dụng để thể hiện một danh sách các thông tin theo từng cell Mỗi cell thông thường được load lên từ một file XML đã được cố định trên đó số lượng thông tin và loại thông tin cần được thể hiện

Để thể hiện được một list thông tin lên một screen thì cần phải có 3 yếu tố chính:

 Data Source: Data Source có thể là một ArrayList, HashMap hoặc bất

kỳ một cấu trúc dữ liệu kiểu danh sách nào

 Adapter: Adapter là một class trung gian giúp ánh xạ dữ liệu trong Data

Source vào đúng vị trí hiển thị trong ListView Chẳng hạn, trong Data Source có một trường name và trong ListView cũng có một TextView để thể hiện trường name này Tuy nhiên, ListView sẽ không thể hiển thị dữ liệu trong Data Source lên được nếu như Adapter không gán dữ liệu vào cho đối tượng hiển thị

 ListView là đối tượng để hiển thị các thông tin trong Data Source ra

một cách trực quan và người dùng có thể thao tác trực tiếp trên đó

Trang 24

Hình 1.13 Minh hoạ cho một ListView

Trang 25

EditText Chẳng hạn như khi bạn muốn một ô để nhập password hay một ô để nhập Email thì thuộc tính này sẽ làm điều đó.

 android:singleLine = “true” EditText của bạn sẽ trở thành một TextField, ngược lại sẽ là TextBox

 1.3 Activity và Intent

 1.3.1 Activity

Activity là một thành chính của một ứng dụng Android, được dùng để hiển thị một màn hình và nắm bắt các hoạt động xảy ra trên màn hình đó Khi làm việc với Activity cần nắm bắt được một số kiến thức cơ bản như sau:

 Tính liên lạc giữa 2 activity

Khi chuyển sang một Activity khác ta có thể gửi kèm dữ liệu trong intend

 1.3.2 Intent

 Khái niệm Intend:

Trang 26

 Là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một Activity

 Là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiều Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc khác nhau Intent chính là người đưa thư, giúp các Activity có thể triệu gọi cũng như truyền các dữ liệu cần thiết tới một Activity khác Điều này cũng giống như việc di chuyển qua lại giữa các Forms trong lập trình Windows Form

Hình 1.14 Truyền dữ liệu giữa 2 Activity

 Dữ liệu của Intend:

 Intent về cơ bản là một cấu trúc dữ liệu, được mô tả trong lớp android.content.Intent

 Các thuộc tính của một đối tượng Intend:

Trang 27

Hình 1.15 Các thuộc tính của Intend

Các Action được định nghĩa sẵn:

Dưới đây là những hằng String đã được định nghĩa sẵn trong lớp Intent Đi kèm với nó là các Activity hay Application được xây dựng sẵn sẽ được triệu gọi mỗi khi Intent tương ứng được gửi

Hình 1.16 Các Action đã được định nghĩa sẵn trong Intend

Trang 28

 Tìm hiểu về bitmap

 Bitmap trong Android.

Lớp Bitmap là lớp thể hiện một bức ảnh trong hệ điều hành Android, chứa các thông tin và các phương thức cơ bản để có thể làm việc được với bức ảnh như đọc, ghi các điểm ảnh, lấy thông tin kích thước, … Được tạo thành từ sự sắp xếp các điểm ảnh, gọi là pixels, theo kiểu lát gạch hay ô lưới

Chất lượng ảnh Bitmap phụ thuộc vào độ phân giải của hình (đơn vị là ppi=pixels per inch), độ phân giải càng cao thì hình càng mịn và sắt nét nhưng sẽ nặng file và tốn tài nguyên máy Khi tăng giảm kích thước ảnh bitmap sẽ gây ra hiện tượng "bể" hình: các cạnh bị răng cưa và màu sắc bị phân mảng ô vuông

Đọc ảnh vào đối tượng Bitmap, cách đơn giản nhất là sử dụng lớp BitmapFactory decode file từ một đường dẫn đến ảnh trên thiết bị

Một đối tượng Bitmap chiếm dụng khá nhiều bộ nhớ, đặc biệt với các bức ảnh nhiều màu như ảnh chụp từ camera Ví dụ với camera 8 megapixels cho bức ảnh có kích thước 3264 x 2448 pixel Nếu Bitmap sử dụng cấu hình ARGB_8888 sau khi được đọc vào bộ nhớ có thể chiếm đến 30MB (3264*2448*4 bytes) bộ nhớ trong

Điều đó sẽ gây nên exception java.lang.OutofMemoryError: bitmap size exceeds VM budget

Một điều nữa là việc xử lý bitmap có kích thước lớn sẽ cần nhiều thời gian tính toán hơn bitmap có kích thước nhỏ Chính vì vậy ta cần một số thủ thuật để có thể làm việc với bitmap hiệu quả

 Màu sắc trong Android

Trong hệ điều hành Android, lớp Color là lớp thể hiện một màu sắc, lớp này

có các thuộc tính và phương thức để làm việc với màu sắc Tuy vậy, màu sắc cũng được thể hiện là một số nguyên 4 bytes, vậy có tổng cộng 2^32 ≈ 16.7 triệu màu Mỗi màu 4 bytes tương ứng với 4 kênh Alpha – Red – Green – Blue, mỗi kênh sẽ

Trang 29

chiếm 1 byte.

Để đọc giá trị của một kênh có thể dùng các toán tử thao tác với bit để cho tốc độ thực thi nhanh

 1.4.3 Thao tác với điểm ảnh trong bitmap

Mỗi một điểm ảnh trên Bitmap là một số nguyên đại diện cho một màu mang giá trị của 4 kênh màu cơ bản Alpha, Red, Green, Blue Chúng ta sẽ đọc các điểm ảnh vào một mảng kiểu nguyên có kích thước bằng với số pixels của ảnh Các thuật toán xử lý ảnh sẽ xử lý trên mảng số nguyên đó sau đó lưu mảng kết quả trở lại Bitmap

Lớp Bitmap cung cấp hai phương thức:

Phương thức trên dùng để đọc toàn bộ điểm ảnh của một ảnh vào mảng số nguyên

Phương thức trên dùng để đặt lại giá trị màu các điểm ảnh từ một mảng số nguyên là mảng giá trị sau khi xử lý

Như vậy ta có thể viết một hàm xủ lý ảnh như sau với đầu vào là một Bitmap, đầu ra là một Bitmap khác đã qua xủ lý:

 Một số thuật toán xử lý ảnh trong android

Trang 30

Hình 1.17 Công thức xử lý ảnh ma trận nhân chập

Trang 32

tô màu xanh lá của đèn neon cho nó còn lại nền là màu đen, như vậy ảnh thu được

sẽ có hiệu ứng đèn neon ở các biên của ảnh

Toán tử Sobel là 2 nhân chập có ma trận hệ số như sau:

Trong đó:

Hx dùng để phát hiện biên theo hướng ngang

Hy dùng để phát hiện biên theo hướng dọc

Trang 33

 Emboss

Hình 1.20 Mô tả ảnh Emboss

Hiệu ứng emboss là một kỹ thuật trong đồ họa máy tính mà với mỗi điểm ảnh của ảnh gốc được thay thế bởi một điểm ảnh nổi bật hoặc một điểm ảnh chìm Vùng ảnh có độ tương phản thấp sẽ được thay thế bởi nền xám

Ảnh sau khi đi qua bộ lọc Emboss sẽ thể hiện tốc độ thay đổi màu tại mỗi nơi của ảnh gốc Nơi có tốc độ thay đổi màu thấp biến thành nền và nơi có tốc độ thay đổi màu cao biến thành các cạnh nổi Ảnh kết quả giống với việc dập nổi một

tờ giấy hoặc kim loại vì vậy hiệu ứng này có tên là dập nổi – emboss

Bản chất là dùng ma trận nhân chập với ma trận hệ số như sau:

Trang 34

 TV Screen

Hiệu ứng màn hình TV CRT không dùng nhân chập hay bộ lọc mà dùng thuật toán riêng dưới đây để có được hiệu ứng biến bức ảnh thành các dòng điểm ảnh với ba màu đỏ, xanh lá, xanh da trời như trên một màn hình CRT

Thuật toán xử lý từng lượt 4 dòng từ trên xuống dưới, hay nói cách khác là

xử lý 4 điểm ảnh nằm trên 4 dòng liền nhau Đọc giá trị R, G, B của 4 điểm ảnh trên cộng lại từng màu sau đó chia cho 4, được giá trị R, G, B trung bình cho 4 điểm Tiếp theo lần lượt đưa giá trị R,G,B trên vào 3 dòng đầu, dòng 1 chỉ lấy giá trị R đưa vào điểm ảnh kết quả, các giá trị khác bằng 0, tương tự dòng 2 chỉ lấy giá trị G, dòng 3 chỉ lấy giá trị B, còn lại dòng 4 thì các điểm ảnh được giữ nguyên theo ảnh gốc Kết quả thu được giống như màn hình TV CRT

 1.5.5 Sketch

Thuật toán tạo ảnh dạng vẽ chì thực hiện trên ảnh xám vì vậy cần chuyển ảnh về dạng ảnh xám trước khi xử lý Thuật toán sẽ tính toán trên 2 điểm ảnh, một điểm ảnh đang xét và một điểm ảnh nằm kề phía dưới bên phải điểm ảnh đang xét Chuyển 2 điểm ảnh về dạng ảnh đa mức xám, tính hiệu 2 giá trị đó nếu lớn hơn một ngưỡng cho trước thì đặt giá trị điểm ảnh đang xét là màu chì, ngược lại đặt màu nền là màu trắng

 1.5.6 Invert

Thuật toán biến đổi âm bản chỉ dựa vào một điểm ảnh, không phụ thuộc các điểm ảnh xung quanh

Y(m,n) = L – X(m,n)

Với - Y(m,n) là giá trị mức xám kết quả của điểm ảnh sau biến đổi

- X(m,n) là giá trị mức xám ban đầu của điểm ảnh

- L là giá trị mức xám tối đa mà một điểm ảnh thể hiện (ảnh 8bit sẽ là 2^8

- 1 = 255)

 1.5.7 Smoothing

Làm trơn ảnh hay làm mịn ảnh làm cho bức ảnh mịn hơn san những điểm

Trang 35

ảnh nhiễu trong bức ảnh gần bằng với các điểm ảnh xung quanh Có thể áp dụng

bộ lọc trung bình hoặc áp dụng nhân chập dưới đây với hệ số factor là 15 và offset

là 1:

 1.5.8 Gaussian blue

Gaussian blue là một loại bộ lọc(filter) làm mờ ảnh, xử dụng lý thuyết hàm Gaussian để tính toán việc chuyển đổi(transformation) mỗi điểm ảnh của hình, giúp làm giảm nhiễu và mức độ chi tiết(không mong muốn) của hình ảnh Đây là phương trình hàm Gaussian trong không gian một chiều:

Và trong không gian 2 chiều:

 1.5.9 Grayscale

Ảnh xám hay còn gọi là ảnh đơn sắc (monochromatic) Ảnh 8 mức xám mỗi điểm ảnh sẽ có giá trị nằm trong đoạn [0-7], ảnh 256 mức xám mỗi điểm ảnh sẽ có giá trị nằm trong đoạn [0-255]

Giá trị của điểm ảnh bằng 0 đại diện cho điểm ảnh tối (đen), giá trị điểm ảnh lơn nhất đại diện cho điểm ảnh sáng (trắng)

Độ sáng được tính theo công thức: (chuyển đổi từ hệ màu RGB)

S = 0.2989R + 0.5870G + 0.1140B

 1.5.10 Sharpen

Trang 36

Làm sáng lên các chi tiết tốt trong ảnh hoặc tăng cường các chi tiết bị mờ Lấy vi phân ảnh ( tức lấy đạo hàm cấp 1, cấp 2) nhằm tăng cường mép ảnh và điểm gián đoạn khác.

Đạo hàm cấp 1 của hàm f(x) được định nghĩa như sau:

Trang 37

 CHƯƠNG 2: KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG

Các ứng dụng photowonder, camera360 là những cái tên rất quen thuộc đối với người dùng, trước những phản hồi thực tế từ người sử dụng thì việc tạo ra ảnh nghệ thuật kết hợp những khung ảnh và những hiệu ứng đặc biệt đang là vấn đề đáng quan tâm

 Đặc tả bài toán

Tên đề tài: Xây dựng ứng dụng chỉnh sửa ảnh trên nền tảng Android

Nội dung bài toán yêu cầu xây dựng một ứng dụng bao gồm các chức năng chính sau:

Trang 38

khi đã chỉnh sửa.



Trang 39

 Edit: Các lựa chọn chỉnh sửa màu sắc, các hiệu ứng, các bộ lọc, điều chỉnh tăng sáng/tối cho ảnh

Trang 40

 Style: Tùy chọn khung ảnh(frame), nền(background) và custom đường viền,

 Thêm text mô tả vào ảnh

 Thêm các stickers biểu tượng ngộ nghĩnh cho bức ảnh

 Share, tạo ảnh nền, lưu bức ảnh lại sau khi đã xử lý

Hình 2.1 Quá trình xử lý một bức ảnh

 Mô tả hoạt động:

Người dùng click vào button edit, một activity mới được tạo, màn hình hiển thị chức năng edit hiện lên, một Hlistview load các item lựa chọn:

 Cân bằng màu sắc(enhance)

 Các hiệu ứng (effect) sephia, tv screen, sketch, neon

 Lựa chọn điều chỉnh sáng, tối, độ sắc nét cho bức ảnh

 Các bộ lọc(filter) : Gaussian blur, emboss, sharpen, glow

 Color Lighten: Chỉnh sửa màu sắc theo hệ màu RGB

 Contrast: làm nổi bật khoảng màu sáng cho bức ảnh trở nên sắc nét giảm

độ nhiễu trên bức ảnh

Khi click vào button styles : giao diện Hlistview sẽ hiển thị các item để set

Ngày đăng: 08/12/2016, 23:51

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Ian F.Darwin - Oreilly.Android.Cookbook.Apr, (2012) [3] Grant Allen - Beginning Android 4, ( 2012) Sách, tạp chí
Tiêu đề: Oreilly.Android.Cookbook.Apr, (2012)"[3] Grant Allen -"Beginning Android 4
[5] Phạm Thế Bảo - Biến hình và xử lý ảnh , Đại học khoa học tự nhiên- ĐHQG Tp Hồ Chí Minh (2013) Sách, tạp chí
Tiêu đề: Biến hình và xử lý ảnh
[6] Wei-Meng Lee - Beginning Android Application Development,(2012) [7] https://developer.android.com/ Sách, tạp chí
Tiêu đề: Beginning Android Application Development
[1] Dawn Griffiths & David Griffiths - Head First Android Development (2015) Khác
[4] Rafael C. Gonzalez, Richard E. Woods - Digital Image Processing (3rd Edition),(2012) Khác

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w