[编辑:我做了一个最小的项目,试图缩小正在发生的事情.底部的代码在保存时仍会生成相同的工件]
我有一个使用Paths绘制简单2D几何的应用程序.形状都是纯色,有时alpha <255,可以用线条装饰.在绘制几何图形的视图中,从未出现过如何绘制事物的问题.但是,当我使用相同的代码绘制到位图,然后将其保存为JPEG(100质量)或PNG时,输出文件的纯色区域中始终存在相同的伪像.这是一种通常与JPEG压缩相关的斑点.
我尝试了以下内容
所有这些都会产生相同的文物,既不会变得更糟也不会更好.
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) 我想将图像文件保存在图库中,以便可以从图库应用程序中查看图像。
但是我想要创建一个单独的目录,就像我们在图库应用程序中为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: …