我正在尝试实现一个搜索栏来改变android中图像的对比度。任何人都帮我实现这个。图像处理还有其他选择吗? 有谁知道解决方案请帮帮我
先谢谢。
CODE:
public class MainActivity extends ActionBarActivity {
ImageView imViewAndroid;
private SeekBar seekbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seekbar = (SeekBar) findViewById(R.id.seekbar);
imViewAndroid = (ImageView) findViewById(R.id.imViewAndroid);
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
imViewAndroid.setImageBitmap(takeContrast(BitmapFactory.decodeResource(getResources(), R.drawable.dicom), 100));
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
public Bitmap takeContrast(Bitmap src, double value) {
// src image size
int width = src.getWidth();
int height = src.getHeight();
// create output bitmap with original size
Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig());
// color information
int A, R, G, B;
int pixel;
// get contrast value
double contrast = Math.pow((100 + value) / 100, 2);
// scan through all pixels
for(int x = 0; x < width; ++x) {
for(int y = 0; y < height; ++y) {
// get pixel color
pixel = src.getPixel(x, y);
A = Color.alpha(pixel);
// apply filter contrast for every channel R, G, B
R = Color.red(pixel);
R = (int)(((((R / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
if(R < 0) { R = 0; }
else if(R > 255) { R = 255; }
G = Color.red(pixel);
G = (int)(((((G / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
if(G < 0) { G = 0; }
else if(G > 255) { G = 255; }
B = Color.red(pixel);
B = (int)(((((B / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
if(B < 0) { B = 0; }
else if(B > 255) { B = 255; }
// set new pixel color to output bitmap
bmOut.setPixel(x, y, Color.argb(A, R, G, B));
}
}
// return final image
return bmOut;
}
答案 0 :(得分:1)
您调用该函数可以在错误的位置更改对比度
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
// call the method here, default progress is <0, 100>
}
使用非常慢的功能来改变对比度。 StackOverflow上已有很多答案,请查看this answer。 在您提出要求之前进行搜索。
在我的github上查看此完整实施。
答案 1 :(得分:0)
以上代码处理图像需要太多时间。如果你使用我的代码处理图像需要很少的时间。
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Date of Activity* "
android:textColor="#000000"
android:textSize="20sp"
android:paddingRight="50dp"
android:id="@+id/dateofactivity"/>
<EditText
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="50dp"
android:layout_width="280dp"
android:height="100dp"
android:textColor="#000000"
android:id="@+id/activitydateswati"
android:layout_toRightOf="@+id/dateofactivity"
android:layout_alignBottom="@+id/dateofactivity"
android:layout_alignParentEnd="false"
android:layout_alignParentStart="false"
android:visibility="visible"
android:inputType="date"
tools:ignore="RtlCompat"/>
<!--android:background="@drawable/edittextstyle"-->
<ImageView android:layout_height="40dp"
android:layout_width="35dp"
android:src="@drawable/calendar1"
android:id="@+id/calimg"
android:clickable="true"
android:onClick="popupimage"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/activitydateswati"
android:layout_toEndOf="@+id/activitydateswati" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Duration* "
android:textColor="#000000"
android:textSize="20sp"
android:layout_below="@+id/calimg"
android:layout_alignLeft="@+id/dateofactivity"
android:layout_alignStart="@+id/dateofactivity"
android:id="@+id/duration"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Frm"
android:textColor="#000000"
android:textSize="20sp"
android:id="@+id/textView2"
android:layout_alignTop="@+id/duration"
android:layout_toRightOf="@+id/dateofactivity"
android:layout_toEndOf="@+id/dateofactivity" />
<Spinner
android:layout_width="50dp"
android:layout_height="wrap_content"
android:id="@+id/fromhour"
android:background="@drawable/edittextstyle"
android:layout_toRightOf="@+id/textView2"
android:layout_toEndOf="@+id/textView2"
android:layout_alignBottom="@+id/textfromhrs"
android:layout_below="@+id/calimg" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hrs"
android:id="@+id/textfromhrs"
android:textColor="#000000"
android:textSize="20sp"
android:layout_alignTop="@+id/textView2"
android:layout_toRightOf="@+id/fromhour"
android:layout_toEndOf="@+id/fromhour" />
<Spinner
android:layout_width="50dp"
android:layout_height="wrap_content"
android:id="@+id/from_minutes"
android:background="@drawable/edittextstyle"
android:layout_toEndOf="@+id/textfromhrs"
android:layout_alignBottom="@+id/textfromhrs"
android:layout_alignTop="@+id/textfromhrs"
tools:ignore="RtlCompat" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="mins"
android:textColor="#000000"
android:textSize="20sp"
android:id="@+id/textfrommins"
android:layout_above="@+id/textView4"
android:layout_toRightOf="@+id/from_minutes"
android:layout_toEndOf="@+id/from_minutes"
android:layout_marginLeft="31dp"
android:layout_marginStart="31dp" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:gravity="left"
android:text="To"
android:textColor="#000000"
android:textSize="20sp"
android:layout_below="@+id/textView2"
android:layout_alignRight="@+id/textView2"
android:layout_alignEnd="@+id/textView2"
android:layout_marginTop="27dp"
android:layout_alignLeft="@+id/textView2"
android:layout_alignStart="@+id/textView2"
android:id="@+id/textView4" />
<Spinner
android:layout_width="50dp"
android:layout_height="wrap_content"
android:id="@+id/tohour"
android:background="@drawable/edittextstyle"
android:layout_alignTop="@+id/textView4"
android:layout_toLeftOf="@+id/textfromhrs"
android:layout_toStartOf="@+id/textfromhrs"
android:layout_alignBottom="@+id/textView4" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="hrs"
android:textColor="#000000"
android:textSize="20sp"
android:layout_alignTop="@+id/tohour"
android:layout_alignLeft="@+id/textfromhrs"
android:layout_alignStart="@+id/textfromhrs"
android:id="@+id/textView5" />
<Spinner
android:layout_width="50dp"
android:layout_height="wrap_content"
android:id="@+id/tominutes"
android:background="@drawable/edittextstyle"
android:layout_alignTop="@+id/textView5"
android:layout_alignLeft="@+id/from_minutes"
android:layout_alignStart="@+id/from_minutes"
android:layout_alignBottom="@+id/textView5" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="mins"
android:textColor="#000000"
android:textSize="20sp"
android:layout_alignTop="@+id/tominutes"
android:layout_alignLeft="@+id/textfrommins"
android:layout_alignStart="@+id/textfrommins"
android:id="@+id/textView11" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hours Invested"
android:textColor="#000000"
android:textSize="20sp"
android:layout_alignTop="@+id/textView6"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/textView8" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Time"
android:textColor="#000000"
android:textSize="20sp"
android:id="@+id/textView6"
android:layout_marginTop="29dp"
android:layout_below="@+id/textView4"
android:layout_alignLeft="@+id/textView4"
android:layout_alignStart="@+id/textView4" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No's Participated* "
android:textColor="#000000"
android:textSize="20sp"
android:layout_marginTop="38dp"
android:id="@+id/textView9"
android:layout_below="@+id/textView8"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_height="wrap_content"
android:layout_width="270dp"
android:hint="Number participated"
android:inputType="number"
android:background="@drawable/edittextstyle"
android:id="@+id/editText"
android:layout_alignTop="@+id/textView9"
android:layout_alignLeft="@+id/activitydateswati"
android:layout_alignStart="@+id/activitydateswati"
android:layout_alignRight="@+id/calimg"
android:layout_alignEnd="@+id/calimg" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Region"
android:textColor="#000000"
android:textSize="20sp"
android:layout_alignTop="@+id/textView12"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/textView14" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="SR"
android:textColor="#000000"
android:textSize="20sp"
android:layout_marginTop="27dp"
android:id="@+id/textView12"
android:layout_below="@+id/editText"
android:layout_alignLeft="@+id/editText"
android:layout_alignStart="@+id/editText" />
<LinearLayout
android:paddingTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@+id/textView14"
android:weightSum="1"
android:id="@+id/linearLayout5">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Activity Selector"
android:id="@+id/textsas"
android:gravity="top"
android:textColor="#000000"
android:textSize="20sp"
android:layout_alignBottom="@+id/selectactivitysector"/>
<android.support.v4.widget.Space
android:layout_width="60dp"
android:layout_height="wrap_content" />
<Spinner
android:layout_width="270dp"
android:layout_height="53dp"
android:id="@+id/selectactivitysector"
android:background="@drawable/edittextstyle"
android:layout_above="@+id/linearLayout4"
android:layout_weight="0.57" />
</LinearLayout>
<LinearLayout
android:paddingTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1"
android:id="@+id/linearLayout4"
android:layout_below="@+id/linearLayout5"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true">
<TextView
android:layout_width="142dp"
android:layout_height="33dp"
android:text="Activity"
android:id="@+id/textselectactivity"
android:layout_gravity="top"
android:gravity="top"
android:textColor="#000000"
android:textSize="20sp"/>
<android.support.v4.widget.Space
android:layout_width="60dp"
android:layout_height="wrap_content" />
<Spinner
android:paddingLeft="0dp"
android:layout_width="125dp"
android:layout_height="53dp"
android:background="@drawable/edittextstyle"
android:id="@+id/selectactivity"
android:layout_column="9"
android:layout_weight="0.84" />
</LinearLayout>
<LinearLayout
android:paddingTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="100"
android:id="@+id/linearLayout2"
android:layout_below="@+id/linearLayout4"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Brief Description"
android:textColor="#000000"
android:textSize="20sp"
android:paddingTop="20dp"
android:layout_gravity="left"
android:id="@+id/textView15"
android:layout_weight="30"
android:layout_alignTop="@+id/editText2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_height="200dp"
android:layout_width="250dp"
android:inputType="textMultiLine"
android:background="@drawable/edittextstyle"
android:gravity="top"
android:layout_weight="60.33"
android:hint="(Provide description within 50 words)"
android:id="@+id/editText2"
android:layout_above="@+id/linearLayout"
/>
<android.support.v4.widget.Space
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="10"/>
</LinearLayout>
<LinearLayout
android:paddingTop="20dp"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="horizontal"
android:weightSum="100"
android:id="@+id/linearLayout"
android:layout_below="@+id/camera">
<Button android:text="Save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="25"
android:id="@+id/save"/>
<android.support.v4.widget.Space
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"/>
<Button
android:text="Next"
android:layout_weight="25"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/next"
android:onClick="onsaveClick" />
<android.support.v4.widget.Space
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"/>
<Button android:text="Cancel"
android:layout_weight="25"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/cancel_action"/>
</LinearLayout>
<ImageView
android:layout_height="40dp"
android:layout_width="35dp"
android:src="@drawable/camera"
android:id="@+id/camera"
android:clickable="true"
android:layout_below="@+id/linearLayout2"
android:layout_alignLeft="@+id/textView12"
android:layout_alignStart="@+id/textView12"
android:onClick="oncamClick" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Date"
android:id="@+id/sonal"
android:layout_below="@+id/linearLayout"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:visibility="visible"/>