相关疑难解决方法(0)

将位图保存到磁盘时,实体路径显示工件

[编辑:我做了一个最小的项目,试图缩小正在发生的事情.底部的代码在保存时仍会生成相同的工件]

我有一个使用Paths绘制简单2D几何的应用程序.形状都是纯色,有时alpha <255,可以用线条装饰.在绘制几何图形的视图中,从未出现过如何绘制事物的问题.但是,当我使用相同的代码绘制到位图,然后将其保存为JPEG(100质量)或PNG时,输出文件的纯色区域中始终存在相同的伪像.这是一种通常与JPEG压缩相关的斑点.

查看截图: 活动截图

保存的图片: 保存的图像文件

放大文物: 放大文物

我尝试了以下内容

  • 保存为PNG和JPEG
  • 打开和关闭抖动和抗锯齿
  • 增加位图的DPI,并允许Bitmap使用其默认API
  • 应用矩阵我用作几何表示的相机,而不是将其应用于位图的Canvas
  • 在整个应用范围内打开和关闭硬件加速
  • 使用第三方库将位图保存为.bmp文件

所有这些都会产生相同的文物,既不会变得更糟也不会更好.

public class MainActivity extends AppCompatActivity {
Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    this.context = getApplicationContext();
}

// button OnClick listener
public void saveImage(View view) {
    new saveBitmapToDisk().execute(false);
}

public Bitmap getBitmap() {
    final int bitmapHeight = 600, bitmapWidth = 600;
    Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);
    Canvas bitmapCanvas = new Canvas(bitmap);

    float[] triangle = new float[6];
    triangle[0] = bitmapWidth / 2;
    triangle[1] …
Run Code Online (Sandbox Code Playgroud)

png android jpeg artifacts android-bitmap

5
推荐指数
1
解决办法
1316
查看次数

下载图像并将其存储在android的Gallery应用中

我想将图像文件保存在图库中,以便可以从图库应用程序中查看图像。

但是我想要创建一个单独的目录,就像我们在图库应用程序中为whatsapp Images等应用程序创建目录一样。

到目前为止,我已经编写了此代码来下载图像

public void createDir(){
  File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), DIR_NAME);
    Log.d(LOG_TAG, "dir pictr :" + dir.toString());
    if (!dir.exists()) {
        dir.mkdir();
        Log.d(LOG_TAG, "dir not exists and created first time");
    } else {
        Log.d(LOG_TAG, "dir exists");
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在gallery dir中创建了目录

Uri imageLink = Uri.parse(downloadUrlOfImage);  // this is download link like www.com/abc.jpg

CreateDir();
DownloadManager.Request request = new DownloadManager.Request(imageLink);

File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), DIR_NAME);
String absPath = dir.getAbsoultePath();
request.setDestinationUri(Uri.parse(absPath + "image.jpg"));
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);

DownloadManager dm = (DownloadManager) getContext().getSystemService(Context.DOWNLOAD_SERVICE);
dm.enqueue(request);
Run Code Online (Sandbox Code Playgroud)

但这给我错误 java.lang.IllegalArgumentException: …

android mediastore android-download-manager

2
推荐指数
1
解决办法
5173
查看次数