Как сохранить фото?
P.S. мне нужно сохранение, т.к. у меня есть код для съёмки фото с камеры, но это фото не сохраняется.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как сохранить фото с камеры напрямую во внутреннюю директорию приложения?
Стартую Intent камеры, добавляю Extra с Uri файла, куда надо сохранить снимок: Intent intent =.
Сохранить фото в новую папку, проверить все фото
Добрый день, вба сегодня впервые увидел) есть такого вида ексель, залил в аттач, который грузит.

Как сохранить фото в БД
Привет всем. помогите решить след проблему плиис. нужно в бд сохронять фото сотрудника. система.
Сделать фото вебкой, сохранить на диск, скачать программу и открыть в ней фото с правами админа
1. Посетитель заходит на сайт, на сайте гугл карта. 2. Нажимает кнопку. 3. Тут же, без всяких.
Работа с изображениями
Одним из наиболее распространенных источников ресурсов являются файлы изображений. Android поддерживает следующие форматы файлов: .png (предпочтителен), .jpg (приемлем), .gif (нежелателен). Для графических файлов в проекте уже по умолчанию создана папка res/drawable . По умолчанию она уже содержит ряд файлов — пару файлов иконок:

При добавлении графических файлов в эту папку для каждого из них Android создает ресурс Drawable . После этого мы можем обратиться к ресурсу следующим образом в коде Java:
R.drawable.имя_файла
@[имя_пакета:]drawable/имя_файла
Например, добавим в проект в папку res/drawable какой-нибудь файл изображения. Для этого скопируем на жестком диске какой-нибудь файл с расширением png или jpg и вставим его в папку res/drawable (для копирования в проект используется простой Copy-Paste)
Далее нам будет предложено выбрать папку — drawable или drawable-24 . Для добавления обычных файлов изображений выберем drawable :

Здесь сразу стоит учесть, что файл изображения будет добавляться в приложение, тем самым увеличивая его размер. Кроме того, большие изображения отрицательно влияют на производительность. Поэтому лучше использовать небольшие и оптимизрованные (сжатые) графические файлы. Хотя, также стоит отметить, что все файлы изображений, которые добавляются в эту папку, могут автоматически оптимизироваться с помощью утилиты aapt во время построения проекта. Это позволяет уменьшить размер файла без потери качества.
При копировании файла нам будет предложено установить для него новое имя.

Можно изменить название файла, а можно оставить так как есть. В моем случае файл называется dubi2.png . И затем нажмем на кнопку Refactor. И после этого в папку drawable будет добавлен выбранный нами файл изображения.

Для работы с изображениями в Android можно использовать различные элементы, но непосредственно для вывода изображений предназначен ImageView . Поэтому изменим файл activity_main.xml следующим образом:
В данном случае для отображения файла в ImageView у элемента устанавливается атрибут android:src . В его значении указывается имя графического ресурса, которое совпадает с именем файла без расширения. И после этого уже в Preview или в режиме дизайнере в Android Studio можно будет увидеть применение изображения, либо при запуске приложения:

Если бы мы создавали ImageView в коде java и из кода применяли бы ресурс, то activity могла бы выглядеть так:
package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import android.os.Bundle; import android.widget.ImageView; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); ConstraintLayout constraintLayout = new ConstraintLayout(this); ImageView imageView = new ImageView(this); // применяем ресурс imageView.setImageResource(R.drawable.dubi2); ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams (ConstraintLayout.LayoutParams.WRAP_CONTENT , ConstraintLayout.LayoutParams.WRAP_CONTENT); layoutParams.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID; layoutParams.topToTop = ConstraintLayout.LayoutParams.PARENT_ID; imageView.setLayoutParams(layoutParams); constraintLayout.addView(imageView); setContentView(constraintLayout); >>
В данном случае ресурс drawable напрямую передается в метод imageView.setImageResource() , и таким образом устанавливается изображение. В результате мы получим тот же результат.
imageView.setImageResource(R.drawable.dubi2);
Однако может возникнуть необходимость как-то обработать ресурс перед использованием или использовать его в других сценариях. В этом случае мы можем сначала получить его как объект Drawable и затем использовать для наших задач:
package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.content.res.ResourcesCompat; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.widget.ImageView; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); ConstraintLayout constraintLayout = new ConstraintLayout(this); ImageView imageView = new ImageView(this); Resources res = getResources(); Drawable drawable = ResourcesCompat.getDrawable(res, R.drawable.dubi2, null); // применяем ресурс imageView.setImageDrawable(drawable); ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams (ConstraintLayout.LayoutParams.WRAP_CONTENT , ConstraintLayout.LayoutParams.WRAP_CONTENT); layoutParams.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID; layoutParams.topToTop = ConstraintLayout.LayoutParams.PARENT_ID; imageView.setLayoutParams(layoutParams); constraintLayout.addView(imageView); setContentView(constraintLayout); >>
Для получения ресурса применяется метод ResourcesCompat.getDrawable() , в который передается объект Resources, идентификатор ресурса и тема. В данном случае тема нам не важна, поэтому для нее передаем значение null. Возвращается ресурс в виде объекта Drawable :
Drawable drawable = ResourcesCompat.getDrawable(res, R.drawable.dubi2, null);
Затем, например, можно также передать ресурс объекту ImageView через его метод setImageDrawable()
imageView.setImageDrawable(drawable);
ImageView
Компонент ImageView предназначен для отображения изображений. Находится в разделе Widgets.
Для загрузки изображения в XML-файле используется атрибут android:src, в последнее время чаще используется атрибут app:srcCompat.
ImageView является базовым элементом-контейнером для использования графики. Можно загружать изображения из разных источников, например, из ресурсов программы, контент-провайдеров. В классе ImageView существует несколько методов для загрузки изображений:
- setImageResource(int resId) — загружает изображение по идентификатору ресурса
- setImageBitmap(Bitmap bitmap) — загружает растровое изображение
- setImageDrawable(Drawable drawable) — загружает готовое изображение
- setImageURI(Uri uri) — загружает изображение по его URI
Метод setImageResource()
Сначала нужно получить ссылку на ImageView, а затем используется идентификатор изображения из ресурсов:
ImageView imageView = findViewById(R.id.imageView); imageView.setImageResource(R.drawable.cat);
Метод setImageBitmap()
Используется класс BitmapFactory для чтения ресурса изображения в объект Bitmap, а затем в ImageView указывается полученный Bitmap. Могут быть и другие варианты.
ImageView imageView = findViewById(R.id.imageView); imageView.setImageBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.cat)); // Kotlin val bitmap: Bitmap = (ResourcesCompat.getDrawable( resources,R.drawable.sleepbedcat,null) as BitmapDrawable).bitmap imageView.setImageBitmap(bitmap)
Метод setImageDrawable()
Если у вас есть готовое изображение, например, на SD-карте, то его можно использовать в качестве объекта Drawable.
ImageView imageView = findViewById(R.id.imageView); // плохой код, только для демонстрации imageView.setImageDrawable(Drawable.createFromPath("/mnt/sdcard/cat.jpg"));
Drawable можно получить и из ресурсов, хотя такой код выглядит избыточным, если можно сразу вызвать setImageResource().
// Kotlin val imageView: ImageView = findViewById(R.id.imageView) imageView.setImageDrawable( ContextCompat.getDrawable(this, R.drawable.cat) )
Метод setImageURI()
Берётся URI файла изображения и используется в качестве источника изображения. Этот способ годится для работы с локальными изображениями.
ImageView imageView = findViewById(R.id.imageView); imageView.setImageURI(URI.parse("file://mnt/sdcard/cat.jpg"));
Загружаем Drawable через URI.
// Kotlin val imageView: ImageView = findViewById(R.id.imageView) val button: Button = findViewById(R.id.button) button.setOnClickListener < val uri: Uri = Uri.parse("android.resource://$packageName/$") // remove previous image uri cache imageView.setImageURI(null) // set image view image from uri imageView.setImageURI(uri) // show the uri in text view textView.text = uri.toString() >
Другие методы
Также вам часто придется использовать методы, связанные с размерами и масштабированием: setMaxHeight(), setMaxWidth(), getMinimunHeight(), getMinimunWidth(), getScaleType(), setScaleType().
Масштабирование через свойство Scale Type
Для масштабирования картинки в ImageView есть свойство Scale Type и соответствующий ему атрибут android:scaleType и перечисление ImageView.ScaleType.
- CENTER
- CENTER_CROP
- CENTER_INSIDE
- FIT_CENTER
- FIT_START
- FIT_END
- FIT_XY
- MATRIX
Чтобы увидеть разницу между разными режимами, желательно использовать большую картинку, превосходящую по ширине экрана устройства. Допустим, у нас есть простенькая разметка:
Для наглядности я задал красный цвет для фона ImageView.
Режим android:scaleType=»center» выводит картинку в центре без масштабирования. Если у вас будет картинка большего размера, то края могут быть обрезаны.

Режим android:scaleType=»centerCrop» также размещает картинку в центре, но учитывает ширину или высоту контейнера. Режим попытается сделать так, чтобы ширина (или высота) картинки совпала с шириной (или высотой) контейнера, а остальное обрезается.

Режим android:scaleType=»centerInside» масштабирует картинку, сохраняя пропорции. Можно увидеть задний фон контейнера, если его размеры отличаются от размера картинки.

Режим android:scaleType=»fitCenter» (по умолчанию) похож на предыдущий, но может не сохранять пропорции.
Если выбрать режим android:scaleType=»fitStart», то картинка прижимается к левому верхнему углу и таким образом заполняет верхнюю половину контейнера.

Значение android:scaleType=»fitEnd» сместит картинку в нижнюю часть контейнера.
Режим android:scaleType=»fitXY» растягивает/сжимает картинку, чтобы подогнать её к контейнеру. Может получиться вытянутая картинка, поэтому будьте осторожны.
Последний атрибут android:scaleType=»matrix» вывел картинку без изменений в левом верхнем углу с обрезанными краями.
Атрибут android:adjustViewBounds=»true»
При использовании атрибута scaleType=»fitCenter» из предыдущего примера Android вычисляет размеры самой картинки, игнорируя размеры ImageView. В этом случае ваша разметка может «поехать». Атрибут adjustViewBounds заставляет картинку подчиниться размеру компонента-контейнера. В некоторых случаях это может не сработать, например, если у ImageView установлен атрибут layout_width=»0dip». В таком случае поместите ImageView в RelativeLayout или FrameLayout и используйте значение 0dip для этих контейнеров.
Загрузка изображения из галереи
Предположим, у вас есть на экране компонент ImageView, и вы хотите загрузить в него какое-нибудь изображение из галереи по нажатию кнопки:
static final int GALLERY_REQUEST = 1; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View v) < Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); photoPickerIntent.setType("image/*"); startActivityForResult(photoPickerIntent, GALLERY_REQUEST); >>); > @Override protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) < super.onActivityResult(requestCode, resultCode, imageReturnedIntent); Bitmap bitmap = null; ImageView imageView = (ImageView) findViewById(R.id.imageView); switch(requestCode) < case GALLERY_REQUEST: if(resultCode == RESULT_OK)< Uri selectedImage = imageReturnedIntent.getData(); try < bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), selectedImage); >catch (IOException e) < e.printStackTrace(); >imageView.setImageBitmap(bitmap); > > >
Намерение ACTION_PICK вызывает отображение галереи всех изображений, хранящихся на телефоне, позволяя выбрать одно изображение. При этом возвращается адрес URI, определяющий местоположение выбранного изображения. Для его получения используется метод getData(). Далее для преобразования URI-адреса в соответствующий экземпляр класса Bitmap используется специальный метод Media.getBitmap(). И у нас появляется возможность установить изображение в ImageView при помощи setImageBitmap().
На самом деле можно поступить ещё проще и использовать метод setImageURI.
Uri selectedImage = imageReturnedIntent.getData(); imageView.setImageURI(selectedImage);
Сравните с предыдущим примером — чувствуете разницу? Тем не менее, приходится часто наблюдать подобный избыточный код во многих проектах. Это связано с тем, что метод порой кэширует адрес и не происходит изменений. Рекомендуется использовать инструкцию setImageURI(null) для сброса кэша и повторный вызов метода с нужным Uri.
В последних версиях системных эмуляторов два примера не работают. Проверяйте на реальных устройствах.
Получить размеры ImageView — будьте осторожны
У элемента ImageView есть два метода getWidth() и getHeight(), позволяющие получить его ширину и высоту. Но если вы попробуете вызвать указанные методы сразу в методе onCreate(), то они возвратят нулевые значения. Можно добавить кнопку и вызвать данные методы через нажатие, тогда будут получены правильные результаты. Либо использовать другой метод активности, который наступает позже.
@Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ImageView imageView = findViewById(R.id.imageView); final TextView infoTextView = findViewById(R.id.textView); // пробуем получить размеры ImageView сразу при загрузке. Вернёт нулевые значения infoTextView.setText("Размеры ImageView: " + String.valueOf(imageView.getWidth()) + " : " + String.valueOf(imageView.getHeight())); Button button = (Button)findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View v) < // этот же код вызывается при нажатии кнопки. Теперь всё правильно infoTextView.setText("Размеры ImageView: " + String.valueOf(imageView.getWidth()) + " : " + String.valueOf(imageView.getHeight())); >>); >
Копирование изображений между ImageView
Если вам надо скопировать изображение из одного ImageView в другой, то можно получить объект Drawable через метод getDrawable() и присвоить ему второму компоненту.
ImageView ivSource = findViewById(R.id.sourceImageView); // 1-й компонент с какой-то картинкой ImageView ivTarget = findViewById(R.id.targetImageView); // 2-й компонент без картинки Drawable drawable = ivSource.getDrawable(); // получим картинку у первого компонента ivTarget.setImageDrawable(drawable); // присвоим второму
Примеры
В моих статьях можно найти примеры использования ImageView.
Библиотеки
CustomShapeImageView — позволяет создавать рамки разных форм.
MikeOrtiz/TouchImageView — расширенный вариант ImageView, который поддерживает касания экрана и масштабирование.
CircleImageView — компонент для создания круглых аватаров. Другая библиотека с похожим названием Pkmmte/CircularImageView. И ещё одна библиотека vinc3m1/RoundedImageView, позволяющая создавать не только круглые изображения, но и овальные и прямоугольные с закруглёнными углами. Сравнивайте. А также упрощённый компонент pavlospt/CircleView, который позволяет создавать круглый элемент с заголовком и подзаголовком.
Сохранение рисунка или другого рисунка в отдельном файле
Word для Microsoft 365 Outlook для Microsoft 365 PowerPoint для Microsoft 365 Word для Microsoft 365 для Mac PowerPoint для Microsoft 365 для Mac Word 2019 Outlook 2019 PowerPoint 2019 Word 2019 для Mac PowerPoint 2019 для Mac Word 2016 Outlook 2016 PowerPoint 2016 Word 2016 для Mac PowerPoint 2016 для Mac Word 2013 Outlook 2013 PowerPoint 2013 Word 2010 Outlook 2010 PowerPoint 2010 Word 2007 Outlook 2007 PowerPoint 2007 Еще. Меньше
Рисунки и рисунки, внедренные в файл Office, сохраняются в файле. Но вы можете сохранить рисунок в отдельном файле, чтобы его можно было использовать в другом месте.
- В Office на macOSможно сохранить фотографию, схему, диаграмму или фигуры в отдельном графическом файле.
- На ПК, в PowerPoint,Word иExcel вы можете сохранить фотографию, фигуру или Графический элемент SmartArt в отдельном файле рисунка. Outlook на компьютере позволяют сохранить фотографию только в отдельном графическом файле.
Сохранение изображения в отдельном файле
В PowerPoint,Word и Excelописанные ниже действия применимы к фотографиям, фигурам, диаграммам, Графические элементы SmartArt, цифровым рукописному вводу и надписям.
ВOutlookописанная ниже процедура применима только к фотографиям.
- Щелкните правой кнопкой мыши рисунок, который вы хотите сохранить в виде отдельного файла изображения, и выберите команду Сохранить как рисунок.
- В списке тип файла выберите нужный формат.
- В поле имя файла введите новое имя для рисунка или просто подтвердите предлагаемое имя файла.
- Выберите папку, в которой вы хотите сохранить изображение.
- Нажмите кнопку Сохранить.
Форматы файлов изображений
-файл (Графический формат GIF)
Обеспечивает поддержку 256 цветов и сохранение данных изображения при сжатии файла.
Формат JPEG
(Формат обмена файлами)
Лучше всего подходит для рисунков с богатой цветовой гаммой, например для отсканированных фотографий.
Формат PNG
(Формат PNG-изображения в формате Portable Network)
Позволяет улучшать качество графических изображений на веб-сайтах благодаря возможности делать прозрачными части рисунка и регулировать яркость.
Формат без потери качества при каждом исправлении и сохранении файла.
Независимый от устройства точечный рисунок
Рисунки, созданные в любой из программ, отображаются в другой программе точно так, как и в исходной.
Графический формат «векторный» с 16 бит
Расширенный метафайл Windows
Графический формат «векторный» 32-bit
Формат SVG
(Масштабируемая векторная графика)
(Требуется версия 1909 или более поздняя)
Изображения можно изменять без потери качества изображения. Файлы поддерживают сжатие данных без потерь.
Эта функция доступна в Word, PowerPoint и Excel. Он подходит для фотографий, фигур, диаграмм, Графические элементы SmartArt, цифровых рукописных фрагментов и текстовых полей.
Сохранение рисунка или другого изображения в отдельном файле
- Щелкните рисунок, который вы хотите сохранить как отдельный файл, и выберите команду Сохранить как рисунок.
- В списке тип файла выберите нужный формат.
- В диалоговом окне Сохранить как введите новое имя для рисунка или просто подтвердите предлагаемое имя файла.
- В поле » где » перейдите к папке, в которой вы хотите сохранить изображение.
- Нажмите кнопку Сохранить.
Форматы файлов изображений
Формат PNG
(Формат Portable Network Graphics
Позволяет улучшать качество графических изображений на веб-сайтах благодаря возможности делать прозрачными части рисунка и регулировать яркость.
Формат JPEG
(Объединенная графическая группа эксперта)
Лучше всего подходит для рисунков с богатой цветовой гаммой, например для отсканированных фотографий.
PDF-файл
(Формат переносимого документа)
Переносимый формат, который может включать текст и изображения.
GIF
-файл (Графический формат GIF)
Обеспечивает поддержку 256 цветов и сохранение данных изображения при сжатии файла.
BMP
(Независимый от устройства точечный рисунок)
Рисунки, созданные в любой из программ, отображаются в другой программе точно так, как и в исходной.
Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).
