简体   繁体   English

如何将Android中的高质量位图图像插入到Gallery中

[英]How to insert high quality Bitmap image in android into Gallery

I know the insert method 我知道插入方法

  MediaStore.Images.Media.insertImage(..............)

Insert a thumbnail instaed of the original Bitmap image,I need a way to save Bitmap with no compress to keep its pixels as they are (steganography), I need the image to be stored on gallery in internal storage. 插入原始位图图像的缩略图,我需要一种无需压缩即可保存位图的方法,以保持其像素不变(隐写术),我需要将图像存储在内部存储库中。

The Gallery can contains folders for application on android, to get high resolution file there is need to store them outside the gallery and tell gallery about your file and your application folder and show your files as thumbnails,so I implement this method which perform what I need and I hope help others Gallery可以包含适用于Android的应用程序的文件夹,要获取高分辨率文件,需要将其存储在Gallery之外,并向Gallery告知您的文件和您的应用程序文件夹,并将您的文件显示为缩略图,因此我实现了执行此方法的方法需要,希望能帮助别人

  private void SaveImage(Bitmap segg) {

    OutputStream fOut = null;
    Random generator = new Random();
    int n = 10000;
    n = generator.nextInt(n);
    String fileName = "Image-"+ n +".png";
    final String appDirectoryName = "TBStego";
    final File imageRoot = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES), appDirectoryName);

    imageRoot.mkdirs();
    final File file = new File(imageRoot, fileName);
    try {
        fOut = new FileOutputStream(file);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    segg.compress(Bitmap.CompressFormat.PNG, 100, fOut);
    try {
        Toast.makeText(ExtractActivity.this,
                file.getAbsolutePath(),
                Toast.LENGTH_LONG).show();
        fOut.flush();
        fOut.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    ContentValues values = new ContentValues();
    values.put(MediaStore.Images.Media.TITLE,"stego");
    values.put(MediaStore.Images.Media.DESCRIPTION, "stego description");
    values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis());
    values.put(MediaStore.Images.ImageColumns.BUCKET_ID, file.toString().toLowerCase(Locale.US).hashCode());
    values.put(MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME, file.getName().toLowerCase(Locale.US));
    values.put("_data", file.getAbsolutePath());
    Toast.makeText(ExtractActivity.this,
            file.getAbsolutePath(),
            Toast.LENGTH_LONG).show();
    ContentResolver cr = getContentResolver();
    cr.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
    Toast.makeText(ExtractActivity.this, "The Image thumbnail created in Gallery ", Toast.LENGTH_LONG).show();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM