Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Падший-фнгел
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 35
#1

Камера растягивает изображение - Android

12.02.2013, 19:51. Просмотров 1730. Ответов 0
Метки нет (Все метки)

Доброе время суток.
Делаю программу которая будет работать с камерой.
Возникла проблема.
Изображение получаемое с камеры растягивается.
Как избавится от этой проблемы?

Вот код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.view.View;
 
import android.hardware.Camera;
import android.hardware.Camera.Size;
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
 
public class MainActivity extends Activity implements SurfaceHolder.Callback, View.OnClickListener, Camera.PictureCallback, Camera.PreviewCallback, Camera.AutoFocusCallback{
private Camera camera;
private SurfaceHolder surfaceHolder;
private SurfaceView preview;
private Button shotBtn;
 
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
 
requestWindowFeature(Window.FEATURE_NO_TITLE);
 
setContentView(R.layout.activity_main);
 
preview = (SurfaceView) findViewById(R.id.SurfaceView01);
 
surfaceHolder = preview.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
 
shotBtn = (Button) findViewById(R.id.button1);
shotBtn.setOnClickListener(this);
}
 
@Override
protected void onResume(){
super.onResume();
camera = Camera.open();
}
 
@Override
protected void onPause(){
super.onPause();
 
if (camera != null){
camera.setPreviewCallback(null);
camera.stopPreview();
camera.release();
camera = null;
}
}
 
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){
}
 
public void surfaceCreated(SurfaceHolder holder){
try{
camera.setPreviewDisplay(holder);
camera.setPreviewCallback(this);
}
catch (IOException e){
e.printStackTrace();
}
 
Size previewSize = camera.getParameters().getPreviewSize();
float aspect = (float) previewSize.width / previewSize.height;
 
int previewSurfaceWidth = preview.getWidth();
int previewSurfaceHeight = preview.getHeight();
 
LayoutParams lp = preview.getLayoutParams();
 
 
if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE){
 
camera.setDisplayOrientation(90);
lp.height = previewSurfaceHeight;
lp.width = (int) (previewSurfaceHeight / aspect);
;
}
else{
 
camera.setDisplayOrientation(0);
lp.width = previewSurfaceWidth;
lp.height = (int) (previewSurfaceWidth / aspect);
}
 
preview.setLayoutParams(lp);
camera.startPreview();
}
 
public void surfaceDestroyed(SurfaceHolder holder){
}
 
public void onClick(View v){
if (v == shotBtn)
{
camera.autoFocus(this);
}
}
 
public void onPictureTaken(byte[] paramArrayOfByte, Camera paramCamera){
 
try{
File saveDir = new File("/sdcard/CameraExample/");
 
if (!saveDir.exists()){
saveDir.mkdirs();
}
 
FileOutputStream os = new FileOutputStream(String.format("/sdcard/CameraExample/%d.jpg", System.currentTimeMillis()));
os.write(paramArrayOfByte);
os.close();
}
catch (Exception e){
}
 
paramCamera.startPreview();
}
 
public void onAutoFocus(boolean paramBoolean, Camera paramCamera){
if (paramBoolean){
paramCamera.takePicture(null, null, null, this);
}
}
 
public void onPreviewFrame(byte[] paramArrayOfByte, Camera paramCamera){
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2013, 19:51     Камера растягивает изображение
Посмотрите здесь:

Android Как узнать есть ли фронтальная камера на устройстве и если есть, то использовать ее?
Android Приложение "Камера"
Android Камера Android
Android Не работает камера AVD
ImageView не растягивает картинку Android
Фейковая камера на андроид Android
Векторное изображение Android
Камера, настройка баланса белого Android
Android Можно ли задавать разрешение с которым должна снимать камера
Не включается камера android 6.0.1 Android
Своя камера в мобильном приложении, что да как? Android
Камера выдаёт маленькое фото Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 02:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru