diff --git a/library/build.gradle b/library/build.gradle index c13645463..76920e427 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -53,4 +53,4 @@ ext { // apply from: 'https://gist.githubusercontent.com/wasabeef/cf14805bee509baf7461974582f17d26/raw/bintray-v1.gradle' // apply from: 'https://gist.githubusercontent.com/wasabeef/cf14805bee509baf7461974582f17d26/raw/install-v1.gradle' -apply from: 'https://gist.githubusercontent.com/wasabeef/2f2ae8d97b429e7d967128125dc47854/raw/maven-central-v1.gradle' \ No newline at end of file +//apply from: 'https://gist.githubusercontent.com/wasabeef/2f2ae8d97b429e7d967128125dc47854/raw/maven-central-v1.gradle' \ No newline at end of file diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/filter/GPUImageFilterGroup.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/filter/GPUImageFilterGroup.java index 8735dbcdc..09aed7c54 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/filter/GPUImageFilterGroup.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/filter/GPUImageFilterGroup.java @@ -46,6 +46,10 @@ public class GPUImageFilterGroup extends GPUImageFilter { private final FloatBuffer glTextureBuffer; private final FloatBuffer glTextureFlipBuffer; + private float mBackgroundRed; + private float mBackgroundGreen; + private float mBackgroundBlue; + /** * Instantiates a new GPUImageFilterGroup with no filters. */ @@ -196,12 +200,12 @@ public void onDraw(final int textureId, final FloatBuffer cubeBuffer, boolean isNotLast = i < size - 1; if (isNotLast) { GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, frameBuffers[i]); - GLES20.glClearColor(0, 0, 0, 0); + GLES20.glClearColor(mBackgroundRed, mBackgroundGreen, mBackgroundBlue, 1); } - if (i == 0) { + if (i == size - 1) { filter.onDraw(previousTexture, cubeBuffer, textureBuffer); - } else if (i == size - 1) { + } else if (i == 0) { filter.onDraw(previousTexture, glCubeBuffer, (size % 2 == 0) ? glTextureFlipBuffer : glTextureBuffer); } else { filter.onDraw(previousTexture, glCubeBuffer, glTextureBuffer); @@ -252,4 +256,10 @@ public void updateMergedFilters() { mergedFilters.add(filter); } } + + public void setBackgroundColor(float red, float green, float blue) { + mBackgroundRed = red; + mBackgroundGreen = green; + mBackgroundBlue = blue; + } } diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index a45d39b0d..6e92741b2 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -35,6 +35,10 @@ android:name=".activity.CameraActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar" /> + \ No newline at end of file diff --git a/sample/src/main/assets/image.png b/sample/src/main/assets/image.png new file mode 100644 index 000000000..087663307 Binary files /dev/null and b/sample/src/main/assets/image.png differ diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/GalleryActivity.kt b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/GalleryActivity.kt index ab45d25b2..a0589a7ec 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/GalleryActivity.kt +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/GalleryActivity.kt @@ -23,6 +23,7 @@ import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener import android.widget.Toast import androidx.appcompat.app.AppCompatActivity +import jp.co.cyberagent.android.gpuimage.GPUImage import jp.co.cyberagent.android.gpuimage.GPUImageView import jp.co.cyberagent.android.gpuimage.filter.GPUImageFilter import jp.co.cyberagent.android.gpuimage.sample.GPUImageFilterTools @@ -39,6 +40,8 @@ class GalleryActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_gallery) + gpuImageView.setScaleType(GPUImage.ScaleType.CENTER_INSIDE) + seekBar.setOnSeekBarChangeListener(object : OnSeekBarChangeListener { override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { filterAdjuster?.adjust(progress) diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ImageActivity.kt b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ImageActivity.kt new file mode 100644 index 000000000..e18905ab8 --- /dev/null +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ImageActivity.kt @@ -0,0 +1,44 @@ +package jp.co.cyberagent.android.gpuimage.sample.activity + +import android.graphics.BitmapFactory +import android.net.Uri +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import jp.co.cyberagent.android.gpuimage.GPUImage +import jp.co.cyberagent.android.gpuimage.GPUImageView +import jp.co.cyberagent.android.gpuimage.filter.* +import jp.co.cyberagent.android.gpuimage.sample.R + +/* + * Copyright (C) 2018 CyberAgent, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +class ImageActivity : AppCompatActivity() { + + private val gpuImage: GPUImageView by lazy { findViewById(R.id.gpu_image) } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_image) + gpuImage.setScaleType(GPUImage.ScaleType.CENTER_INSIDE) + gpuImage.filter = GPUImageFilterGroup(listOf(GPUImageBrightnessFilter(), + GPUImageSaturationFilter(), + GPUImageWhiteBalanceFilter(), + GPUImageSharpenFilter())).apply { + setBackgroundColor(0.27f, 0.27f, 0.27f) + } + gpuImage.setBackgroundColor(1f,1f,1f) + gpuImage.setImage(Uri.parse("file:///android_asset/image.png")) + } +} \ No newline at end of file diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/MainActivity.kt b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/MainActivity.kt index 61957ff3f..8cbccc615 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/MainActivity.kt +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/MainActivity.kt @@ -35,6 +35,11 @@ class MainActivity : AppCompatActivity() { findViewById(R.id.button_gallery).setOnClickListener { startActivity(Intent(this, GalleryActivity::class.java)) } + + findViewById(R.id.button_image).setOnClickListener { + startActivity(Intent(this,ImageActivity::class.java)) + } + findViewById(R.id.button_camera).setOnClickListener { if (!hasCameraPermission() || !hasStoragePermission()) { ActivityCompat.requestPermissions( diff --git a/sample/src/main/res/layout/activity_image.xml b/sample/src/main/res/layout/activity_image.xml new file mode 100644 index 000000000..497d71274 --- /dev/null +++ b/sample/src/main/res/layout/activity_image.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/sample/src/main/res/layout/activity_main.xml b/sample/src/main/res/layout/activity_main.xml index b0ae0fbb9..e8288d9b2 100644 --- a/sample/src/main/res/layout/activity_main.xml +++ b/sample/src/main/res/layout/activity_main.xml @@ -10,6 +10,15 @@ android:gravity="center" android:orientation="vertical"> +