1
QR 코드의 비트 맵을 생성하는 응용 프로그램을 개발 중이지만 다음 QR 코드의 생성 된 비트 맵은 매우 낮은 품질입니다저장/공유를위한 비트 맵 품질 향상
private static Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight, boolean isNecessaryToKeepOrig) {
int width = bm.getWidth();
int height = bm.getHeight();
float scaleWidth = ((float) newWidth)/width;
float scaleHeight = ((float) newHeight)/height;
// CREATE A MATRIX FOR THE MANIPULATION
Matrix matrix = new Matrix();
// RESIZE THE BIT MAP
matrix.postScale(scaleWidth, scaleHeight);
// "RECREATE" THE NEW BITMAP
Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false);
if(!isNecessaryToKeepOrig){
bm.recycle();
}
return resizedBitmap;
}
이 사용 위의 방법을 호출 : 아래의 코드를 사용하여 개선
imageView.setImageBitmap(getResizedBitmap(myBitmap,1000,1000,true));
위의 방법을 사용하여 품질이 많이 개선되고 나는 매우 높은 품질의 QR 코드를 볼 수 있습니다 이전의 것과 달리 imageView
에 그런 다음
내가 저장하거나 코드를 아래를 통해 공유 해요 : 그것을 통해 공유
:
String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmm").format(new Date()); String mImageName="QR-"+ timeStamp +".jpg"; String bitmapPath = MediaStore.Images.Media.insertImage(getContentResolver(), myBitmap,mImageName, "QR code Generated"); Uri bitmapUri = Uri.parse(bitmapPath); Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("image/jpg"); intent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(intent, "Share"));
것은 그것을 통해 저장 :
private void storeImage(Bitmap image) { File pictureFile = getOutputMediaFile(); if (pictureFile == null) { Log.d(TAG, "Error creating media file, check storage permissions: ");// e.getMessage()); return; } try { FileOutputStream fos = new FileOutputStream(pictureFile); image.compress(Bitmap.CompressFormat.JPEG,100,fos); fos.flush(); fos.close(); Toast.makeText(ImagePopUp.this,"Barcode Saved!!!",Toast.LENGTH_LONG).show(); } catch (FileNotFoundException e) { Log.d(TAG, "File not found: " + e.getMessage()); } catch (IOException e) { Log.d(TAG, "Error accessing file: " + e.getMessage()); } } private File getOutputMediaFile(){ File mediaStorageDir = new File(Environment.getExternalStorageDirectory() + "/Pictures"); if (! mediaStorageDir.exists()){ if (! mediaStorageDir.mkdirs()){ return null; } } // Create a media file name String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmm").format(new Date()); String mImageName="QR-"+ timeStamp +".jpg"; File mediaFile; mediaFile = new File(mediaStorageDir.getPath() + File.separator + mImageName); return mediaFile; }
하지만 저장되거나 공유되는 이미지의 품질이 매우 낮고 (갤러리) 갤러리에 표시되지 않습니다.
홈페이지 질문
-> 어떻게 저장/공유를 통해 매우 높은 품질의 이미지를 가지고하는?
그리고 내가 비트 맵의 품질 향상을 위해 사용하고 방법이 가장 좋은 방법인지 아닌지 모르겠어요 ...
JPEG는 손실 이미지 형식입니다. PNG를 사용해 보셨습니까? –
@MorrisonChang 했어. 도움이되지 못했습니다. –
'ImageView'를 위해 크기가 조정 된 비트 맵을 만들 때 저장하지 않는 것처럼 저장/공유 코드에 올바른 비트 맵을 전달하고 있습니까? –