【发布时间】:2016-01-11 19:40:26
【问题描述】:
我正在创建一个 android 应用程序,它基本上通过 EditText 在 xml 布局中将背景图像(默认图像)与用户输入合并。
我已经开发了一些工作代码,但它似乎无法正常工作。
欢迎任何形式的帮助。
附言开发新手。
这是我的MainActivity.Java 课程
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
EditText editText; //defined edit text
Bitmap bmp; // defined Bitmap
Button button;
public void myBit(){
bmp = Bitmap.createBitmap(editText.getDrawingCache());
}
public void saveImg() {
File myDir = new File("/sdcard/saved_images");
myDir.mkdir();
Random ran = new Random();
int n = 10000;
n = ran.nextInt(n);
String fname = "Image-"+n+".jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
// canvas for merging text over image (Bitmap)
Canvas canvas = new Canvas(bmp);
Paint paint = new Paint();
paint.setColor(Color.WHITE); // Text Color
paint.setStrokeWidth(12); // Text Size
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)); // Text Overlapping Pattern
// some more settings...
canvas.drawBitmap(bmp, 400, 400, paint); // ◄ Edited here
canvas.drawText("Testing...", 10, 10, paint);
bmp.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.main, menu);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
saveImg();
Toast.makeText(MainActivity.this, "Image Saved!!", Toast.LENGTH_SHORT).show();
}
});
return true;
}
}
【问题讨论】:
-
“sdcard/saved_images”文件夹是否存在?您是否在清单文件中声明了所需的权限?这段代码是否有任何异常?
-
@GilMoshayof 是的,我已经在清单中声明了所有权限,并且这段代码没有出现任何异常。
-
文件夹呢?它存在吗? mkdir() 返回什么值?
-
@GilMoshayof 是的,该文件夹存在并且它正在创建一个“0 字节”图像文件,只要单击“保存”按钮。
-
您是否检查过您通过 myBit() 创建的位图的大小?确保它的大小大于 0(宽度和高度)。
标签: java android canvas bitmap