Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将android中的高质量位图图像插入Gallery_Android_Bitmap_Image Gallery - Fatal编程技术网

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

如何将android中的高质量位图图像插入Gallery,android,bitmap,image-gallery,Android,Bitmap,Image Gallery,我知道插入法 MediaStore.Images.Media.insertImage(..............) 插入原始位图图像的缩略图,我需要一种无需压缩即可保存位图的方法以保持其像素不变(隐写术),我需要将图像存储在gallery的内部存储器中。gallery可以包含android应用程序的文件夹,要获得高分辨率文件,需要将它们存储在gallery之外,并告诉gallery有关您的文件和应用程序文件夹的信息,并将您的文件显示为缩略图,因此我实现了此方法,它可以执行我需要的功能,我

我知道插入法

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

插入原始位图图像的缩略图,我需要一种无需压缩即可保存位图的方法以保持其像素不变(隐写术),我需要将图像存储在gallery的内部存储器中。

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();
}

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();
}