我希望将2位图并排保存到有效图像文件中。
我可以保存booth位图中的所有字节,图像文件是一个有效的图像字节,我可以打开并看到它,但只是第一个位图显示在图像中!
我试过了:
void save_bitmaps()
{
ByteArrayOutputStream stream = new ByteArrayOutputStream();
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/req_images");
myDir.mkdirs();
String fname = "Map"+ String.valueOf(10) + ".png";
File file = new File(myDir, fname);
for(int i=0;i<2;i++)
{
int count=0;
//------------------------------------------
Bitmap bitmap = Bitmap.createBitmap(500,500,Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bitmap);
if(i==0)
c.drawColor(Color.BLUE);
if(i==1)
c.drawColor(Color.RED);
bitmap.compress(Bitmap.CompressFormat.PNG,100,stream);
byte[] bytarray = stream.toByteArray();
//----------------------------------------------------------------
if (file.exists())
file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
out.write(bytarray,count,bytarray.length);
out.flush();
out.close();
count+=bytarray.length;
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getContext() , "ERROR" , Toast.LENGTH_SHORT).show();
}
}
Toast.makeText(getContext() ,"Saved" , Toast.LENGTH_SHORT).show();
}
这段代码有效,但没有显示它们两个!
这是我的目标:
我怎么做到这一点。如果你知道我怎么做,请帮忙!
注意: 1.我从不想将2个位图组合成另一个位图并保存目标位图。
全部谢谢!
答案 0 :(得分:0)
使用以下代码您可以添加图像并将它们并排保存。 这对我有用。 一切顺利,希望你的解决方案正确无误。
我在组合图像本身内添加了保存文件功能。您可以根据您需要实现的逻辑来更改它,因为组合图像将是函数的输出。
public Bitmap combineImages(Bitmap c, Bitmap s) {
Bitmap cs = null;
int width, height = 0;
if(c.getWidth() > s.getWidth()) {
width = c.getWidth() + s.getWidth();
height = c.getHeight();
} else {
width = s.getWidth() + s.getWidth();
height = c.getHeight();
}
cs = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas comboImage = new Canvas(cs);
comboImage.drawBitmap(c, 0f, 0f, null);
comboImage.drawBitmap(s, c.getWidth(), 0f, null);
String tmpImg = String.valueOf(System.currentTimeMillis()) + ".png";
String loc="IMAGE Combined-";
OutputStream os = null;
try {
os = new FileOutputStream(loc + tmpImg);
cs.compress(CompressFormat.PNG, 100, os);
} catch(IOException e) {
Log.e("combineImages", "problem combining images", e);
}*/
return cs;
}