반응형
비트 맵을 파일로 변환
사용 BitmapFactory
하면 파일을 비트 맵으로 변환 할 수 있지만 비트 맵 이미지를 파일로 변환 할 수있는 방법이 있습니까?
이 시도:
bitmap.compress(Bitmap.CompressFormat.PNG, quality, outStream);
그것이 당신을 도울 것입니다 희망 :
//create a file to write bitmap data
File f = new File(context.getCacheDir(), filename);
f.createNewFile();
//Convert bitmap to byte array
Bitmap bitmap = your bitmap;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 0 /*ignored for PNG*/, bos);
byte[] bitmapdata = bos.toByteArray();
//write the bytes in file
FileOutputStream fos = new FileOutputStream(f);
fos.write(bitmapdata);
fos.flush();
fos.close();
File file = new File("path");
OutputStream os = new BufferedOutputStream(new FileOutputStream(file));
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);
os.close();
변환 Bitmap
에 File
의 요구는 배경 (NOT IN 주요 나사산)는 특별히 경우 UI 응답에서 수행되는 bitmap
컸다을
File file;
public class fileFromBitmap extends AsyncTask<Void, Integer, String> {
Context context;
Bitmap bitmap;
String path_external = Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg";
public fileFromBitmap(Bitmap bitmap, Context context) {
this.bitmap = bitmap;
this.context= context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
// before executing doInBackground
// update your UI
// exp; make progressbar visible
}
@Override
protected String doInBackground(Void... params) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
file = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg");
try {
FileOutputStream fo = new FileOutputStream(file);
fo.write(bytes.toByteArray());
fo.flush();
fo.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
// back to main thread after finishing doInBackground
// update your UI or take action after
// exp; make progressbar gone
sendFile(file);
}
}
그것을 호출
new fileFromBitmap(my_bitmap, getApplicationContext()).execute();
당신은 사용해야 file
에서을 onPostExecute
.
file
캐시 교체 라인에 저장 될 디렉토리를 변경하려면 다음을 수행 하십시오.
file = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg");
로 :
file = new File(context.getCacheDir(), "temporary_file.jpg");
희망이 당신을 도울
MainActivity 클래스 : AppCompatActivity () {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Get the bitmap from assets and display into image view
val bitmap = assetsToBitmap("tulip.jpg")
// If bitmap is not null
bitmap?.let {
image_view_bitmap.setImageBitmap(bitmap)
}
// Click listener for button widget
button.setOnClickListener{
if(bitmap!=null){
// Save the bitmap to a file and display it into image view
val uri = bitmapToFile(bitmap)
image_view_file.setImageURI(uri)
// Display the saved bitmap's uri in text view
text_view.text = uri.toString()
// Show a toast message
toast("Bitmap saved in a file.")
}else{
toast("bitmap not found.")
}
}
}
// Method to get a bitmap from assets
private fun assetsToBitmap(fileName:String):Bitmap?{
return try{
val stream = assets.open(fileName)
BitmapFactory.decodeStream(stream)
}catch (e:IOException){
e.printStackTrace()
null
}
}
// Method to save an bitmap to a file
private fun bitmapToFile(bitmap:Bitmap): Uri {
// Get the context wrapper
val wrapper = ContextWrapper(applicationContext)
// Initialize a new file instance to save bitmap object
var file = wrapper.getDir("Images",Context.MODE_PRIVATE)
file = File(file,"${UUID.randomUUID()}.jpg")
try{
// Compress the bitmap and save in jpg format
val stream:OutputStream = FileOutputStream(file)
bitmap.compress(Bitmap.CompressFormat.JPEG,100,stream)
stream.flush()
stream.close()
}catch (e:IOException){
e.printStackTrace()
}
// Return the saved bitmap uri
return Uri.parse(file.absolutePath)
}
}
참고 URL : https://stackoverflow.com/questions/7769806/convert-bitmap-to-file
반응형
'IT박스' 카테고리의 다른 글
.data () 키 / 값을 기준으로 필터 요소 (0) | 2020.07.26 |
---|---|
R에서 ggplot2로 히스토그램 오버레이 (0) | 2020.07.26 |
Rails 4-변수를 부분적으로 전달 (0) | 2020.07.26 |
HTML 테이블에 가로 스크롤 막대 추가 (0) | 2020.07.26 |
토큰 인증 및 쿠키 (0) | 2020.07.26 |