С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

12.02.2013, 19:51. Просмотров 2089. Ответов 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 не растягивает картинку - Программирование Android
Есть lyaout. На нем в RelativeLayout вставлена картинка ImageView. Этот элемент имеет ширину 4dp, а высота должна быть на весь layout (он...

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

Не работает камера - Программирование Android
Пытаюсь разобраться с работой камеры и не получается. Всё работает в Андроид4 (любой код), но в шестой версии приложение падает, хотя...

Не работает камера AVD - Программирование Android
При запуске любого приложения на AVD которое использует камеру вылетает ошибка:unfortunately,camera has stopped.

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

Не включается камера android 6.0.1 - Программирование Android
Здравствуйте, возникла проблема. На всех устройствах камера работает, кроме Xperia_Z3_Compact с android 6.0.1 Возвращает камеру null при...

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

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

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

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

Камера и разрешение на запись - Attempt to get lenght of null aray - Программирование Android
Работа с камерой и разрешениями на запись. Ошибка - Attempt to get lenght of null aray. Помогите плиз не могу понять что с этими...


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

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

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