重庆潼南网站建设公司/怎样优化网络

重庆潼南网站建设公司,怎样优化网络,网站建设有什么工作,单页网站怎么做这几天看到亚瑟boy的技术连载,也试着做了下带滤镜特效的照相机,效果也出来了,但是发现添加滤镜特效后的预览窗口卡屏现象很严重,于是自己索性试着尝试修改,在亚瑟和其他网友的代码中基本上都是对于照相机data视频流先进…

这几天看到亚瑟boy的技术连载,也试着做了下带滤镜特效的照相机,效果也出来了,但是发现添加滤镜特效后的预览窗口卡屏现象很严重,于是自己索性试着尝试修改,在亚瑟和其他网友的代码中基本上都是对于照相机data视频流先进行解码,然后对解码出的帧Bitmap进行滤镜算法处理,这个是必走的流程,而每一帧在处理解码和滤镜时都需要用掉大量时间,我测了下,解码需要300毫秒左右,滤镜处理需要600毫秒左右(冰冻滤镜),如此一来,处理完这两个流程需要的时间要在900毫秒甚至更长,我们知道如果看上去比较流畅的话我们需要每秒更新三帧的图片,而这么处理只能更新一张,明显的卡屏。
于是试着去缩小处理的Bitmap大小,在照相机预览返回照片大小中设置:

Camera.Parameters parameters = camera.getParameters();
parameters.setPreviewSize(display.getWidth()/2, display.getHeight()/2);// 设置预览照片的大小


原来默认是返回屏幕大小的预览图片,此时我改成了屏幕大小一半的图片,发现处理过程明显加快了(当然也有稍微的卡屏),最后在预览回调接口PreviewCallBack中再将图片放大到屏幕大小,有雨我预览图片返回时只是缩小了一半,此时放大回屏幕大小时仍然是非常清晰的,如果你想速度更快的话可以继续缩小预览图片的返回大小。

代码如下:

public class CameraActivity extends NoSearchActivity {private static final String TAG = "CameraActivity";private SurfaceView surfaceView;private Camera camera;private boolean preview;private ImageButton take_picture;private int width,height;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Window window = getWindow();requestWindowFeature(Window.FEATURE_NO_TITLE);// 没有标题
                 window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);// 高亮
 setContentView(R.layout.camera_view);ButtonClickingListener buttonlistener = new ButtonClickingListener();surfaceView = (SurfaceView) this.findViewById(R.id.camera_surface);WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);Display display = wm.getDefaultDisplay();width = display.getWidth();height = display.getHeight();take_picture = (ImageButton) findViewById(R.id.take_picture);//拍照
                 take_picture.setOnClickListener(buttonlistener);surfaceView.getHolder().setFixedSize(width, height); // 设置分辨率/* 下面设置Surface不维护自己的缓冲区,而是等待屏幕的渲染引擎将内容推送到用户面前 */surfaceView.getHolder().addCallback(new SurfaceCallback());}//按钮监听private final class ButtonClickingListener implements View.OnClickListener {@Overridepublic void onClick(View v) {if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {Toast.makeText(CameraActivity.this, R.string.sdcarderror, 1).show();return;}try {switch (v.getId()) {case R.id.take_picture:camera.takePicture(null, null, new TakePictureCallback());break;}} catch (Exception e) {Toast.makeText(CameraActivity.this, R.string.error, 1).show();Log.e(TAG, e.toString());}}}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubif(camera!=null){camera.setPreviewCallback(null) ;camera.stopPreview();camera.release();camera = null;}super.onDestroy();}private final class SurfaceCallback implements SurfaceHolder.Callback {@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}@Overridepublic void surfaceCreated(SurfaceHolder holder) {if(camera==null){camera = Camera.open();//打开相机}else{Toast.makeText(CameraActivity.this, "相机正在使用中", 1).show();}WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);Display display = wm.getDefaultDisplay();Camera.Parameters parameters = camera.getParameters();parameters.setPreviewSize(display.getWidth()/2, display.getHeight()/2);// 设置预览照片的大小parameters.setPreviewFrameRate(3);// 每秒3帧parameters.setPictureFormat(PixelFormat.JPEG);// 设置照片的输出格式parameters.set("jpeg-quality", 100);// 照片质量parameters.setPictureSize(display.getWidth(), display.getHeight());// 设置照片的大小
                         camera.setParameters(parameters);camera.setPreviewCallback(new PreviewCallBack());// 通过SurfaceView显示取景画面camera.startPreview();//开始预览preview = true;}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {if (camera != null) {if (preview)camera.stopPreview();camera.release();}} }@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (camera != null && event.getRepeatCount() == 0) {switch (keyCode) {case KeyEvent.KEYCODE_MENU:camera.autoFocus(null);// 自动对焦break;case KeyEvent.KEYCODE_CAMERA:case KeyEvent.KEYCODE_DPAD_CENTER:camera.takePicture(null, null, new TakePictureCallback());break;case KeyEvent.KEYCODE_BACK:new AlertDialog.Builder(CameraActivity.this).setTitle("提示").setMessage("确定退出照相机?").setPositiveButton("确定",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,int whichButton) {Intent exit = new Intent(Intent.ACTION_MAIN);exit.addCategory(Intent.CATEGORY_HOME);exit.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(exit);System.exit(0);}}).setNegativeButton("取消",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,int whichButton) {// 取消按钮事件
                                                         dialog.cancel();}}).show();break;}}return super.onKeyDown(keyCode, event); // 不会回到 home 页面
         }//预览回调接口private final class PreviewCallBack implements Camera.PreviewCallback {public void onPreviewFrame(byte[] data, Camera camera) {if (data != null) {int imageWidth = camera.getParameters().getPreviewSize().width;int imageHeight = camera.getParameters().getPreviewSize().height;int RGBData[] = new int[imageWidth * imageHeight];decodeYUV420SP(RGBData, data, imageWidth, imageHeight); //解码Bitmap bm = Bitmap.createBitmap(RGBData, imageWidth, imageHeight, Config.ARGB_8888);//                                bm = toGrayscale(bm);//实时滤镜效果,现在是变成黑白效果bm = ice(bm);//冰冻效果Canvas canvas = surfaceView.getHolder().lockCanvas();// 判断非null,才能drawBitmap.if (bm != null) {bm = Bitmap.createScaledBitmap(bm, width, height,false);canvas.drawBitmap(bm, 0, 0, null);}surfaceView.getHolder().unlockCanvasAndPost(canvas);}}}

灰度效果(黑白照片)

public static Bitmap toGrayscale(Bitmap bmp) {int height = bmp.getHeight();int width = bmp.getWidth();Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);Canvas c = new Canvas(bmpGrayscale);Paint paint = new Paint();ColorMatrix cm = new ColorMatrix();cm.setSaturation(0);ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);paint.setColorFilter(f);c.drawBitmap(bmp, 0, 0, paint);return bmpGrayscale;}

冰冻特效

public static Bitmap ice(Bitmap bmp) {int width = bmp.getWidth();int height = bmp.getHeight();Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);int dst[] = new int[width * height];bmp.getPixels(dst, 0, width, 0, 0, width, height);int R, G, B, pixel;int pos, pixColor;for (int y = 0; y < height; y++) {for (int x = 0; x < width; x++) {pos = y * width + x;pixColor = dst[pos]; // 获取图片当前点的像素值R = Color.red(pixColor); // 获取RGB三原色G = Color.green(pixColor);B = Color.blue(pixColor);pixel = R - G - B;pixel = pixel * 3 / 2;

if (pixel < 0)pixel = -pixel;if (pixel > 255)pixel = 255;
R
= pixel; // 计算后重置R值,以下类同pixel = G - B - R;pixel = pixel * 3 / 2;
if (pixel < 0)pixel = -pixel;if (pixel > 255)pixel = 255;
G
= pixel;pixel = B - R - G;pixel = pixel * 3 / 2;
if (pixel < 0)pixel = -pixel;if (pixel > 255)pixel = 255;B = pixel;dst[pos] = Color.rgb(R, G, B); // 重置当前点的像素值} // x} // ybitmap.setPixels(dst, 0, width, 0, 0, width, height);return bitmap;}

获取照片回调

private final class TakePictureCallback implements PictureCallback {@Overridepublic void onPictureTaken(byte[] data, Camera camera) {try {Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,data.length);bitmap = ice(bitmap);File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis() + ".jpg");//保存在SD卡根目录下,以当前时间毫秒命名FileOutputStream outStream = new FileOutputStream(file);bitmap.compress(CompressFormat.JPEG, 100, outStream);outStream.close();camera.stopPreview();camera.startPreview();//重新开始照相预览} catch (Exception e) {Log.e(TAG, e.toString());}}}

 解码

static public void decodeYUV420SP(int[] rgb, byte[] yuv420sp, int width, int height) {final int frameSize = width * height;for (int j = 0, yp = 0; j < height; j++) {int uvp = frameSize + (j >> 1) * width, u = 0, v = 0;for (int i = 0; i < width; i++, yp++) {int y = (0xff & ((int) yuv420sp[yp])) - 16;if (y < 0)y = 0;if ((i & 1) == 0) {v = (0xff & yuv420sp[uvp++]) - 128;u = (0xff & yuv420sp[uvp++]) - 128;}

int y1192 = 1192 * y;int r = (y1192 + 1634 * v);int g = (y1192 - 833 * v - 400 * u);int b = (y1192 + 2066 * u);if (r < 0)r = 0;else if (r > 262143)r = 262143;if (g < 0)g = 0;else if (g > 262143)g = 262143;if (b < 0)b = 0;else if (b > 262143)b = 262143;rgb[yp] = 0xff000000 | ((r << 6) & 0xff0000) | ((g >> 2) & 0xff00) | ((b >> 10) & 0xff);}}}}

camera_view 代码:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal" android:layout_width="fill_parent"android:layout_height="fill_parent" android:background="#000000"><SurfaceView android:id="@+id/camera_surface"android:layout_height="fill_parent"android:layout_width="fill_parent"android:layout_weight="2.0" /><LinearLayout android:orientation="vertical"android:layout_width="50dip"android:layout_height="fill_parent"android:gravity="center_vertical"><ImageButton android:layout_width="48dip"android:layout_height="48dip"android:src="@android:drawable/ic_menu_camera"android:id="@+id/take_picture" /><View android:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="2.0"/></LinearLayout></LinearLayout>

效果如下图:照相机冰冻效果

 

 

转载于:https://www.cnblogs.com/vus520/archive/2012/04/12/2561976.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle linux6 u盘安装,U盘安装RHEL6

1)烧录ISO镜像用软碟通写入硬盘镜像rhel-server-6.5-x86_64-boot.iso&#xff0c;然后将rhel-server-6.2-x86_64-dvd.iso复制到U盘根目录备注&#xff1a;如果是烧录DVD那么就直接烧rhel-server-6.2-x86_64-dvd.iso即可&#xff0c;U盘安装linux不注意此处会发生找不到image错误…

网页设计师的最佳设计工具名单出炉

一个网站的基本设计是为了吸引大多数人。因此&#xff0c;要吸引更多的客户&#xff0c;他们需要运用所有可能的图案和花纹&#xff0c;创造出惊人的效果&#xff0c;体现网站自身的美感。这样&#xff0c;设计师就需要使用一些设计工具&#xff0c;以确保有更高的效率。创建3D…

HDOJ1879(继续畅通工程)

题目链接 最小生成树的题。克鲁斯卡尔算法。 View Code 1 #include <stdio.h>2 #define N 1003 #define M 50004 struct node5 {6 int a,b,d;7 }edge[M];8 int n;9 int p[N]; 10 void make_set() 11 { 12 int i; 13 for(i1;i<n;i) p[i]i; 14 } 15 int …

bug是什么PHP,bug是什么

在程序设计中&#xff0c;bug一词&#xff0c;是我们经常听到的&#xff0c;那么bug是什么意思&#xff0c;下面我们来总结一下。什么是bug?在IT中&#xff0c;bug一般表示程序中出现的错误&#xff0c;因为软件运行中出现错误&#xff0c;或者是硬件造成的错误&#xff0c;出…

php 渐变色,段落每行渐变色文本效果

这次给大家带来段落每行渐变色文本效果&#xff0c;段落每行渐变色文本效果的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。今天小编在Codepen上看到一个CSS写的效果。一个段落的每行文本是渐变效果。对于单行文本或单个词实现渐变填充效果并不是什么…

SEO笔记—网页结构优化(四)

网页结构优化是页面优化的重点之一&#xff0c;它是对网页内容布局的规划&#xff0c;合理的网页结构能够有效地提高用户体验和搜索引擎的友好性。网页主要包含导航栏、栏目以及正文三部分组成&#xff0c;对网页结构的主要也是围绕这三部分进行的。 1、页面重要区域分布规律 搜…

linux下spi有哪些函数,linux下怎么快速的使用 SPI 驱动。

ek_spi_devices 数组就在本文件内。/** SPI devices.*/static struct spi_board_info ek_spi_devices[] {#if !(defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_AT91)){/* DataFlash chip */.modalias "mtd_dataflash",.chip_select 1,.max_speed_hz 15 * 100…

SQL 查询横表变竖表

首先是三张表&#xff0c; CNo对应的是课程&#xff0c;在这里我就粘贴了。 主表 人名表 按照常规查询 SELECT s.SName, c.CName,s2.SCgrade FROM S s INNER JOIN SC s2 ON s2.SNo s.SNo INNER JOIN C c ON c.CNo s2.CNo 那么结果是这样的 但是这是横表 不是我想…

东芝笔记本linux系统安装驱动,笔记本驱动,详细教您东芝笔记本无线网卡驱动怎么安装...

在品牌的笔记本电脑中&#xff0c;使用东芝笔记本的用户都知道&#xff0c;东芝笔记本电脑具有十分鲜明的特色&#xff0c;其产品十分注重细节与工艺&#xff0c;为用户带去了不错的使用体验。那么如果要下载安装无线网卡驱动&#xff0c;该怎么操作呢&#xff1f;下面&#xf…

asp.net页面绑定数据的方式-----未完待续

**方式一 **方式二转载于:https://www.cnblogs.com/wgx0428/archive/2012/05/10/2493953.html

红帽企业版linux 7.3,红帽推企业Linux 7.3 新功能特性一览

原标题&#xff1a;红帽推企业Linux 7.3 新功能特性一览【IT168 云计算】日前红帽宣布推出企业Linux 7.3版本&#xff0c;作为Linux平台的最新版本&#xff0c;红帽方面透漏本次更新的版本在网络与存储功能两方面做到了强化。同时&#xff0c;该版本还引入了关于Linux容器和物联…

Android游戏开发系统控件-Dialog

Android游戏开发系统控件-Dialog Dialog(对话框)在Android应用开发中经常用到&#xff0c;下面是学习《Android游戏编程从零开始》一书&#xff0c;关于Dialog的初步学习。 创建项目&#xff1a;DialogProject 作者&#xff1a;wwj 日期&#xff1a;2012/5/13 功能&#xff1a…

步进电机编写单4拍或4-8拍方式的汇编或c语言控制程序.,基于SCM和PLC的两种步进电机控制方法...

引 言步进电机位移与输入脉冲信号数相对应&#xff0c;精度高、响应特性好、可靠性高、速度可在较宽范围内平滑调节&#xff0c;是控制系统中一种重要的自动化执行元件。SCM(Single Chip Microcomputer&#xff0c;单片机)是把组成微型计算机的中央处理器、存储器、输入输出接口…

在网上找到一个CSS hack列表,记录在这里以分析css的浏览器兼容性

另外摘抄一份目前的css浏览器兼容问题汇总&#xff0c;记录在这里自己好好学习一下 CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了一下.对于web2.0的过度,请尽量用xhtml格式写代码,…

c语言安卓贪吃蛇代码下载,C语言贪吃蛇代码

c语言编写贪吃蛇源代码&#xff0c;简单易懂&#xff0c;文件为VC源代码。如果你正在学习c语言&#xff0c;就来下载吧。很经典的C语言贪吃蛇代码部分#include #include #include#include#define SX 50#define SY 25#define Length 10#define Xnub 50#define Ynub …

android webview 图表,Android WebView 无法正常显示网页图表

1、Android项目中&#xff0c;使用了一个WebView&#xff0c;加载的页面是一个使用百度echart和canvas写的统计图表&#xff0c;现在网页版和IOS版都能正常显示&#xff0c;Android无法正常显示&#xff1a;2、ios和web端&#xff1a;3、android 端&#xff1a;4、Android控制台…

在Windows XP下,安装VS 2010 Express For Windows Phone .

在安装Windows Phone SDK 的系统环境要求中&#xff0c;只支持windows vista、windows 7&#xff0c;不支持winXP&#xff0c;暂时不想升级win7的用户&#xff0c;想要在XP系统开发WP应用程序&#xff0c;就多了一种限制&#xff0c;多次在网上搜索&#xff0c;会发现在XP下也能…

荣耀v40pro可以用鸿蒙系统,荣耀V40Pro快来了!麒麟9000+120Hz+鸿蒙系统,价格感人...

原标题&#xff1a;荣耀V40Pro快来了&#xff01;麒麟9000120Hz鸿蒙系统&#xff0c;价格感人苹果将于10月14日凌晨1点召开秋季第二场新品发布会&#xff0c;iPhone12系列将正式登场。华为Mate40系列的发布日期将会在国庆假期过后公布&#xff0c;不出意外就是10月15日&#xf…

html 鼠标图标做成动画效果,纯css3实现的鼠标悬停动画按钮

今天给大家带来一款纯css3实现的鼠标悬停动画按钮。这款按钮鼠标经过前以正方形的形式&#xff0c;当鼠标经过的时候以动画的形式变成圆形。效果图如下&#xff1a;实现的代码。html代码&#xff1a;复制代码代码如下:css3代码&#xff1a;复制代码代码如下:body{background-co…

联想乐Pad_A1获取root权限

1、下载root包&#xff1a;参考http://bbs.anzhi.com/thread-4786308-1-1.html 里面的root包&#xff0c;共两个&#xff0c;到电脑。2、将tf卡&#xff0c;置入平板电脑&#xff0c;通过大存储方式连接电脑&#xff0c;以fat或者fat32方式将tf卡格式化&#xff0c;然后将下载的…