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

SurfaceView и Camera - как изменить размер файла? - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Начинающему разработчику http://www.cyberforum.ru/android-dev/thread1498151.html
Здравствуйте. Планирую разрабатывать приложения на андроид. Собственно вопрос , с чего лучше начать ? С изучения Java , изучения среды разработки или с чего то еще ?
Android Заблокирован Android и требуют деньги - какие инструменты лечения существуют? Куда обращаться, в какой раздел форума, с проблемой разблокировки планшета и телефона, на которых функционирует ОС Android? На экране вот что: «Google play. Просмотр запретного контента для взрослых на Аndroid строго запрещён политикой Google. За первое нарушение работа устройтва временно приостановлена до оплаты штрафа.» Далее указано, что надо заплатить штраф 500 руб. на... http://www.cyberforum.ru/android-dev/thread1496418.html
С Lollipop 5.0.2 практически перестал адекватно работать Lg G3 stylus Android
Знакомый посоветовал обновить андроид на lollipop 5.0.2 (у меня Lg D690, 2сим) , сказал все нормально не лагов ничего , я обновил (официальную , через обновление ПО) , первые пару дней было не привычно по этому не замечал что телефон начал тупить , на день 3 стала пропадать мобильная сеть , интернет вообще не грузил , батарея начала заряжаться буквально за час (Батарея 3000mAh) и очень стал...
Android Чрезмерное потребление питания батареи
Всем привет! Посоветуйте приложение, которое может автоматически закрывать приложения чрезмерно потребляющие питание. Наверняка такие утилиты существуют, где можно указать при каких уровнях потребления батареи закрывать приложения автоматически. Писать сообщения вроде "гугли" - не нужно. Если бы нашёл в гугле - не обращался бы на форум с вопросом.
Android Вызовы не попадают в журнал вызовов http://www.cyberforum.ru/android-dev/thread1495072.html
Здравствуйте, смарт Сони Кспериа М2 Дуал на Андроиде, перезагрузка не помогла, как это лечится? спасибо Добавлено через 9 минут кстати, что то не знаю, как сброс настроек сделать? нужно опробовать Добавлено через 4 минуты сброс нашёл ПРЕДОСТОРОЖНОСТИ Сброс до заводских настроек удаляет все ваши личные данные, все контакты, сохраненные в телефоне и все установленные вами программы....
Android Как понять переадресация ли? Звонят люди по переадресации, но! У меня на секунд 5 высвечивается на телефоне samsung galaxy s5, что это переадресация, а после пропадает, то есть если я гляну на телефон не сразу, а когда до него добегу, то не ясно откуда вызов. Есть ли на Android какое ПО, которое СТАТИЧНО показывает, что это переадресация? Что бы табличка фиксировалась на экране до окончания вызова с момента поступления? подробнее

Показать сообщение отдельно
Ksar13th
2 / 2 / 0
Регистрация: 14.02.2012
Сообщений: 28

SurfaceView и Camera - как изменить размер файла? - Android

13.07.2015, 16:21. Просмотров 439. Ответов 0
Метки (Все метки)

Цель: сделать фотку камерой, и получить её в виду Byte[].
Реализация: Использую SurfaceView и Camera. (системная камера через intent не устраивает, нашёл вот такой метод реализации как ниже)
Беда: при сохранении JPg файла - он имеет размер 640x480. Что бы я не делал. А мне нужен файл где-то под 1200. Как изменить расширение сохраняемого файла? Не могу найти, пол дня убил уже.((

*тестирую на Samsung Galaxy S3.


Ниже код(постарался вырезать из него всё лишнее)
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
public class CameraActivity extends Activity {
 
    SurfaceView surfaceView;
    Camera camera;
    File photoFile;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        setContentView(R.layout.activity_camera);
 
        File pictures = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        photoFile = new File(pictures, "myphoto.jpg");
 
        surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
 
        LayoutParams lp = surfaceView.getLayoutParams();
        lp.width = 200;
        lp.height = 100;
        surfaceView.setLayoutParams(lp);
 
        SurfaceHolder holder = surfaceView.getHolder();
        holder.addCallback(new SurfaceHolder.Callback() {
            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                SetCameraParams();
                try {
                    camera.setPreviewDisplay(holder);
                    camera.startPreview();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
 
            @Override
            public void surfaceChanged(SurfaceHolder holder, int format,int width, int height) {
                //SetCameraParams();
            }
 
            @Override
            public void surfaceDestroyed(SurfaceHolder holder) {
            }
        });
 
    }
 
 
    protected void SetCameraParams() {
 
        Camera.Parameters param;
        param = camera.getParameters();
 
        param.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
        param.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
        param.setSceneMode(Camera.Parameters.SCENE_MODE_AUTO);
        param.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO);
        param.setExposureCompensation(0);
        param.setPictureFormat(ImageFormat.JPEG);
        param.setJpegQuality(100);
        param.setRotation(90);
 
        List<Camera.Size> sizes = param.getSupportedPictureSizes();
        Camera.Size size = sizes.get(0);
        param.setPictureSize(100, 200);
 
       /*param.setJpegQuality(100);
        param.setPreviewSize(200, 100);
        param.setPictureSize(200, 100);
        param.setJpegThumbnailSize(200, 100);*/
 
        camera.setParameters(param);
 
        //camera.setDisplayOrientation(0);
    }
 
 
 
 
    @Override
    protected void onResume() {
        super.onResume();
        camera = Camera.open();
    }
 
 
    @Override
    protected void onPause() {
        super.onPause();
        if (camera != null)
            camera.release();
        camera = null;
    }
 
    public void onClickPicture(View view) {
        camera.takePicture(null, null, new PictureCallback() {
            @Override
            public void onPictureTaken(byte[] data, Camera camera) {
                try {
                    ExitExecute(data, photoFile);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
 
    }
 
 // выход из активности
    void ExitExecute(byte[] b, File f) {
        try {
            // сохранение в файл для проверки
            FileOutputStream file_output_stream = new FileOutputStream(f);
            file_output_stream.write(b);
            file_output_stream.close();
 
            // уходим
            finish();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Добавлено через 1 час 31 минуту
Отбой, тему можно закрывать.

Может кому пригодится - копать сюда:
param = camera.getParameters();
param.setPictureSize(960, 720);
camera.setParameters(param);

Только разрешение должно быть выбрано из списка "param.getSupportedPictureSizes();"; и если тестируете на телефоне на ПК под виндой - телефон нужно извлекать из ПК между тестами, иначе винда не обновляет сведения о файлах. На чём я, собственно, и погорел. >_<

Но всё равно спасибо, что выслушали, это помогло.)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru