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

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

12.02.2013, 19:51. Просмотров 2358. Ответов 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){
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2013, 19:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Камера растягивает изображение (Программирование Android):

ImageView не растягивает картинку
Есть lyaout. На нем в RelativeLayout вставлена картинка ImageView. Этот элемент...

Не работает камера
Пытаюсь разобраться с работой камеры и не получается. Всё работает в Андроид4...

Камера Android
Посоветуйте хорошие туториалы по созданию приложения "Камера", буду благодарна...

Фейковая камера на Android
Доброго времени суток, друзья! Мне нужна программа, которая сможет отключить...

Не работает камера AVD
При запуске любого приложения на AVD которое использует камеру вылетает...

Не включается камера android 6.0.1
Здравствуйте, возникла проблема. На всех устройствах камера работает, кроме...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2013, 19:51
Привет! Вот еще темы с решениями:

Камера выдаёт маленькое фото
Пытаюсь записать фото в память , файл записывается , но в фото крошечная...

Камера, настройка баланса белого
Всем привет! Подскажите пожалуйста, как в андройде приложение с камерой...

Своя камера в мобильном приложении, что да как?
Друзья, про рисование спросил, про саму съемку забыл. Опять же, самым первым...

Камера и разрешение на запись - Attempt to get lenght of null aray
Работа с камерой и разрешениями на запись. Ошибка - Attempt to get lenght of...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru