android 自定义相机问题。

zTianyu2011 2015-01-09 09:31:16
有两个问题:
1.我照相的时候,SurfaceView(我估计是预览图)会拉伸一下但是照的相还是很正确的。我看网上说要把setPictureSize和setPreviewSize,而且还要设成4/3,16/9之类的,但是我不管怎么设,不管设在拍照的时候还是设在初始化的时候都没有用,感觉这个参数完全没有用(android 4.0的程序),我的SurfaceView在布局中设过比例,也设置过整个屏幕都没有成功。求教...

2,第二个问题就是我在小米1s(720p)上面照的相拍的很清晰(3.5M),比例为1.77的样子,但是我在小米4(1080p)的上面怎么都是照的很不清楚,只有200K左右大小的图片,照的相片比例为1.2的样子。我很怀疑是照出图片比例问题(我看网上说的正常的是1.33和1.77左右),但是我也是按上面的方法设置各种比例参数,设布局和setPictureSize,setPreviewSize,但是也是什么都没有改变,图片大小和比例在两个手机上面都没有变化。

求各位大大帮下忙,不知道帮顶下也行,祝各位程序员升职加薪,早日走向人生巅峰...
...全文
624 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
windfury_plus 2015-01-15
  • 打赏
  • 举报
回复
引用 4 楼 zty7612956 的回复:
嗯,真的是这样,我开始不知道听谁说的好像后面的版本不用写这个,现在加上去就好了,顺便问下,你这个镜头旋转了90度之后设置宽高不需要调一下顺序吗?我设的都是(高,宽)才能使照的相变正常。 还有获取尺寸为什么要取第一个啊?我打log发现后面的大一点,我想取个最合适的大小的怎么取啊? 还有一个问题就是我的预览都是正常的,屏幕固定式竖直的,但是我每次照的相片都是一个横着的相片,这个怎么能弄正啊? 求兄弟赐教
1、取合适的大小可以parameters.setPreviewSize(宽,高);前面代码里有 2、可以拍出来后自己用Matrix操作获得的bitmap,旋转90度。 例如Bitmap.createBitmap(source, x, y, width, height, m, filter)
zTianyu2011 2015-01-14
  • 打赏
  • 举报
回复
嗯,真的是这样,我开始不知道听谁说的好像后面的版本不用写这个,现在加上去就好了,顺便问下,你这个镜头旋转了90度之后设置宽高不需要调一下顺序吗?我设的都是(高,宽)才能使照的相变正常。 还有获取尺寸为什么要取第一个啊?我打log发现后面的大一点,我想取个最合适的大小的怎么取啊? 还有一个问题就是我的预览都是正常的,屏幕固定式竖直的,但是我每次照的相片都是一个横着的相片,这个怎么能弄正啊? 求兄弟赐教
Jing丶無雙 2015-01-13
  • 打赏
  • 举报
回复
这是我最近写得部分代码,分享给楼主!总之如楼上所说 camera.setParameters(params); 只有调用了这个函数 camera才会真正修改参数
	@Override
		public void surfaceCreated(SurfaceHolder holder) {
			if (camera != null) {
				camera.release();// 相机释放
			}
			camera = Camera.open();// 打开相机
			camera.setDisplayOrientation(90);// 旋转镜头

			parameters = camera.getParameters();// 获取相机参数集
			if (parameters.getFlashMode() == null) {
				flash.setImageResource(flashImg[FLASH_OFF]);
				Toast.makeText(PhotographActivity.this, "无闪光灯",
						Toast.LENGTH_SHORT).show();
			} else {
				parameters.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
				List<Size> SupportedPreviewSizes = parameters
						.getSupportedPreviewSizes();// 获取支持预览照片的尺寸
				Size previewSize = SupportedPreviewSizes.get(0);// 从List取出Size
				parameters
						.setPreviewSize(previewSize.width, previewSize.height);// 设置预览照片的大小
				List<Size> supportedPictureSizes = parameters
						.getSupportedPictureSizes();// 获取支持保存图片的尺寸
				Size pictureSize = supportedPictureSizes.get(0);// 从List取出Size
				parameters
						.setPictureSize(pictureSize.width, pictureSize.height);// 设置照片的大小
				camera.setParameters(parameters);
			}
			maxZoom = parameters.getMaxZoom();// 获取最大像素
			zoomSet.setMax(maxZoom);// 设置最大像素
			try {
				camera.setPreviewDisplay(cameraBG.getHolder());// 设置相机预览
			} catch (IOException e) {
				e.printStackTrace();
			}
			camera.startPreview();// 开始预览
			preview = true;

		}
zTianyu2011 2015-01-12
  • 打赏
  • 举报
回复
自己来顶一下
zyl9241 2015-01-12
  • 打赏
  • 举报
回复
在最后加个 camera.setParameters(params); 只有调用了这个函数 camera才会真正修改参数

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧