android gpuimage显示的缩放和剪裁模式

xiaoxiao2021-02-28  131

原文:http://blog.csdn.net/u011270282/article/details/51505755   在gpuimagerender里面有如下方法,GPUImage.ScaleType.CENTER_CROP表示剪裁,可以修改他的参数达到自己的需要。     private void adjustImageScaling() {         float outputWidth = mOutputWidth;         float outputHeight = mOutputHeight;         if (mRotation == Rotation.ROTATION_270 || mRotation == Rotation.ROTATION_90) {             outputWidth = mOutputHeight;             outputHeight = mOutputWidth;         }         float ratio1 = outputWidth / mImageWidth;         float ratio2 = outputHeight / mImageHeight;         float ratioMax = Math.max(ratio1, ratio2);         int imageWidthNew = Math.round(mImageWidth * ratioMax);         int imageHeightNew = Math.round(mImageHeight * ratioMax);         float ratioWidth = imageWidthNew / outputWidth;         float ratioHeight = imageHeightNew / outputHeight;         float[] cube = CUBE;         float[] textureCords = TextureRotationUtil.getRotation(mRotation, mFlipHorizontal, mFlipVertical);         if (mScaleType == GPUImage.ScaleType.CENTER_CROP) {             float distHorizontal = (1 - 1 / ratioWidth) / 2;             float distVertical = (1 - 1 / ratioHeight) / 2;             textureCords = new float[]{                     addDistance(textureCords[0], distHorizontal), addDistance(textureCords[1], distVertical),                     addDistance(textureCords[2], distHorizontal), addDistance(textureCords[3], distVertical),                     addDistance(textureCords[4], distHorizontal), addDistance(textureCords[5], distVertical),                     addDistance(textureCords[6], distHorizontal), addDistance(textureCords[7], distVertical),             };         } else {             cube = new float[]{                     CUBE[0] / ratioHeight, CUBE[1] / ratioWidth,                     CUBE[2] / ratioHeight, CUBE[3] / ratioWidth,                     CUBE[4] / ratioHeight, CUBE[5] / ratioWidth,                     CUBE[6] / ratioHeight, CUBE[7] / ratioWidth,             };         }         mGLCubeBuffer.clear();         mGLCubeBuffer.put(cube).position(0);         mGLTextureBuffer.clear();         mGLTextureBuffer.put(textureCords).position(0);     }
转载请注明原文地址: https://www.6miu.com/read-85513.html

最新回复(0)