سایر مقالات این دسته
تاریخچه و خصوصیات اندرویداجزای تشکیل دهنده سیستم عامل اندرویدآشنایی با API های اندرویدایجاد،ساخت و اجرای اولین برنامه اندرویدیکار با دکمه ها در اندرویدکار با تکست باکس ها در اندرویدکار با تکست ویو در اندرویدکار با گرید ویو در اندرویدکار با وب ویو در اندرویدکار با اسکرول ویو در اندرویدکار با اسکرول ویو افقیکار با الرت دیالوگ (AlertDialog)در اندرویدکار با ایمیج باتن(Image Button) در اندرویدکار با توگل باتنکار با چک باکس (Checkbox) در اندرویدکار با الرت دیالوگ (AlertDialog)در اندروید قسمت دوکار با ریتینگ بار(Rating bar) در اندرویدرفتن از یک اکتویتی به اکتویتی دیگرکار با نوتیفیکیشن ها (Notifications )در اندرویدکار با صوت در برنامه نویسی اندرویدکار با ویبره(Vibrator) در اندرویدکار با دوربین در اندرویدکار با دوربین در اندرویدکار با ویدیو ویو (VideoView)در اندرویدکار با شبکه وای فای (Wifi)در اندرویدکار با لیست ویو (ListView) در اندرویدکار با سیک بار (SeekBar) در اندرویدکار با دکمه بازگشت در اندرویدکار با AutoCompleteTextView در اندرویدتغییر فونت در اندرویدکار با لایه TableLayout در اندرویدکار با لیست کشویی (Spinner) در اندرویدکار با CalendarView در اندرویدساخت شمارنده در اندرویدکار با title bar در اندرویدکار با منو (Menu)در اندرویدکار با لیست ویو (Listview) قسمت دومطراحی رابط کاربری در اندروید قسمت اولطراحی رابط کاربری در اندروید قسمت دوم(طراحی گرد)کار با استایل در اندرویدکار با لایه AbsoluteLayout در اندرویدطراحی رابط کاربری در اندروید کار با gradientکار با کلیپ بورد(ClipBoard)در اندروید کار با مولتی تاچ(Multitouch ) در اندروید+سورس کدکار با OnLongClick در اندرویدکار با منوی زمینه (ContextMenu ) در اندرویدکار با حرکات (Gesture) در اندرویدکار با (AudioCapture) در اندروید+سورس کدکار با موتور Speech در اندروید + سورسکار با PhoneCall در اندرویدساخت لیست ویو سفارشی در اندروید+سورسساخت Toastسفارشی در اندرویدانتقال برنامه به حافظه sdکار با TextWatcher در اندروید+سورستغییر رنگ محیط Eclipse طراحی رابط کاربری در اندروید کار با Canvasساخت اکشن بار سفارشی در اندروید+سورسساخت الرت دیالوگ سفارشی در اندرویدساخت برنامه نمایش مقدار شارژ باتری در اندرویدایجاد افکت رنگی بروی تصاویر در اندروید+سورسساخت آپشن منوی سفارشی در اندروید+سورسساخت دکمه سه بعدی با Selectorسخنان بزرگان برنامه نويسيوارد كردن پروژه در محيط ايكليپساضافه کردن switch,case به لیست ویوبارش برف بروی تصویر + سورسکار با فیلتر hue رنگی کردن تصویر انتخاب و پخش فایل صوتی از حافظه گوشی+سورساضافه کردن چک باکس به لیست ویوکار با ShelfView یا نمایش کتابخانه ای + سورسکار با TabHost،اضافه کردن تب به برنامه های اندرویدآموزش کامل ساخت اکشن بار سفارشی+سورسساخت برنامه های واکنش گرا(ریسپانسیو) در اندرویدقسمت دوم صفحات 7 اینچ به بالااضافه کردن انیمیشن به دکمه+سورسکار با View Switcher در اندروید + سورسکار با فیلتر Blur Mask + سورسدانلود پک کامل آیکون های طراحی اندرویدکار با sharedPreferences در اندروید+سورسآموزش کار با proguard،محافظت از برنامه اندرویدپخش فایل صوتی (MP3) از ادرس اینترنتی+سورسپخش ویدیو از آدرس اینترنتی(URL) در اندروید+سورسگوشی های و تبلت های مطرح تا چینی به ساده ترین روشپاسخ به رویداد های WebVeiw دسترسی به وب ویو با استفاده از جاوااسکریپتساخت ExpandableListView به ساده ترین شکل+سورسکار با WIFI اکسس+سورسساخت تقویم هجری برای اندروید+سورسapp rateدانلود و نمایش تصویر در ListView+سورسدانلود و نمایش فایل متنی+سورسکار با کلاس های پایه اکتیویتیآینه کردن تصویر+سورسافزودن آیتم منو سفارشی بهActionBar+سورسارسال اطلاعات از دیتابیس به GridView + سورسدسترسی به Api هایREST قسمت اولتغییر فونت لیست ویوفعال سازی و معرفی بخش های Android developer options بخش اول کار با JSON در اندرویدآموزش ساده نصب شبیه ساز اندروید Genymotion

حلقه های تکرار در ++C
1395/11/20

اکشن بار در زامارین
1395/11/13

معرفی وب سرویس ها در زامارین
1395/11/12

عملگرها در زبان ++C
1395/11/06

ایجاد آسان فرم ثبت نام با PHP/MySQL به صورت Ajax
1395/11/06

کار با فیلتر Blur Mask + سورس


رضا نقی لو 1394/07/26

به نام خدا،در این جلسه  می خواهیم با نحوه Blur کردن تصویر در پردازش تصویر آشنا بشیم.در این اموزش می خواهیم با نحوه محو کردن قسمتی از تصویر و نمایش قسمتی از اون به صورت واضح دیده بشه(همانند تصویر).در قسمت های قبلی با پردازش تصویر در برنامه نویسی اندروید با مثال های مختلف آشنا شده ایم.امروزه استفاده از ای نوع فیلتر محبوبیت خاصی پیدا کرده است و شما می توانید با مقداری تغییرات یک اپلیکیشن مناسب برای ویرایش تصویر ایجاد کنید.

 

برای شروع کار یک پروژه جدید ایجاد  میکنیم به نام BlurMaskFilter فیلتر کردن تصویر در حالت محو شوندگی.در لایه  اصلی برنامه از یک دکمه برای بارگذاری تصویر از گالری و از یک ImageView جهت نمایش تصویر بارگذاری شده استفاده خواهیم کرد.(کدهای کامل لایه برنامه activity_main.xml).

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@android:color/background_dark"
tools:context=".MainActivity" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://appinapps.com/"
android:textStyle="bold" />

<Button
android:id="@+id/loadimage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Load Image 1" />

<ImageView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="centerInside" />

</LinearLayout>

بعد از اینکه لایه برنامه رو تکمیل کردیم میریم سراغ کلاس MainActivity.java و  نوشتن کدهای جاوای برنامه.در جلسات قبلی با نحوه بارگذاری تصویر و ویدیو در برنامه نویسی اندروید آشنا بشیم.در این جلسه فقد کلاس پردازش تصویر رو توضی میدیدم چرا که در قسمت های قبلی به صورت کل توضیح داده شده است.ابتدا یک کلاس به نام loadGrayBitmap ایجاد میکنیم و سپس عرض و ارتفاع  تصویر رو که می خواهیم روش پردازش انجام بدیم رو تعیین میکنم و سپس مقدار عرض و ارتفاع فیلترمون که همون blur هست رو مشخص می کنیم.در مرحله بعدی شدت بلوره کردن تصویر رو مشخص میکنم با مقدار 100.0f در مرحله آخر رنگ بیرونی و داخی تصویر رو مشخص میکنم با استفاده از کلاس های blurPaintOuter و blurPaintInner (کدهای کامل MainActivity.java).

 /*
* appinapps.com
* آموزش رایگان برنامه نویسی
*/

import java.io.FileNotFoundException;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BlurMaskFilter;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {

Button btnLoadImage;
ImageView imageResult;

//اجازه بارگذاری عکس
final int RQS_IMAGE1 = 1;

Uri source;
//معرفی بی مپ
Bitmap bitmapMaster;
//معرفی کانوس
Canvas canvasMaster;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btnLoadImage = (Button) findViewById(R.id.loadimage);
imageResult = (ImageView) findViewById(R.id.result);

/*
* معرفی رویداد کلیک
* معرفی یک اکشن اینتنت برای باز کردن گالری
*/
btnLoadImage.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Intent intent = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, RQS_IMAGE1);
}
});
}

//یک کلاس onActivityResult برای بارگذاری تصویر از گالری و قرار دادن در برنامه 
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if (resultCode == RESULT_OK) {
switch (requestCode) {
case RQS_IMAGE1:
source = data.getData();

try {
bitmapMaster = BitmapFactory
.decodeStream(getContentResolver().openInputStream(
source));
loadGrayBitmap(bitmapMaster);

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

break;
}
}
}

//ایچاد کلاس برای بلورکردن تصویر
private void loadGrayBitmap(Bitmap src) {
if (src != null) {

//عرض و ارتفاع تصویر 
int w = src.getWidth();
int h = src.getHeight();
//برابری عرض و ارتفاع با مقدار بلور تصویر
RectF rectF = new RectF(w/4, h/4, w*3/4, h*3/4);
//شدت بلور تصویر
float blurRadius =100.0f;

//ساخت بیت مپ کانوس 
Bitmap bitmapResult = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas canvasResult = new Canvas(bitmapResult);

//ایجاد یک paint
Paint blurPaintOuter = new Paint();
//معرفی رنگ برای paint
blurPaintOuter.setColor(0xFFffffff);

//اضافه کردن فیلتر خارجی
blurPaintOuter.setMaskFilter(new 
BlurMaskFilter(blurRadius, BlurMaskFilter.Blur.INNER));
canvasResult.drawBitmap(bitmapMaster, 0, 0, blurPaintOuter);

//رنگ داخلی فیلتر
Paint blurPaintInner = new Paint();
blurPaintInner.setColor(0xFFffffff);
blurPaintInner.setMaskFilter(new 
BlurMaskFilter(blurRadius, BlurMaskFilter.Blur.OUTER));
canvasResult.drawRect(rectF, blurPaintInner);

imageResult.setImageBitmap(bitmapResult);
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

و در مرحله آخر هم  باید یادون باش که  دسترسی (<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>) مربوط به اجازه استفاده از حافظه گوشی رو فعال کنیم در فایل Manifest.xml. (کدهای کامل Manifest.xml).

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.appinapps.blurmaskfilter"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.appinapps.blurmaskfilter.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

سورس کامل این آموزش رو می تونید از این لینک دانلود کنید.

فایلهای ضمیمه
توجه! هیچ فایل ضمیمه ای برای این مطلب یافت نشد
درباره نویسنده
admin2
رضا نقی لو
androiddev60@gmail.com
نظرات شما
نظر جدید