为了账号安全,请及时绑定邮箱和手机立即绑定

请问如何在安卓中两个图片都用一半合并成一张图片。

请问如何在安卓中两个图片都用一半合并成一张图片。

富国沪深 2019-04-18 18:15:05
网上找到Bitmap,讲的也一盖而过。还是不会用,不懂。大佬们看看啦。
查看完整描述

3 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

//合成
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ImageView iv = findViewById(R.id.iv);

    Bitmap newP1 = getNewBitmap(R.drawable.p1);
    Bitmap newP2 = getNewBitmap(R.drawable.p2);

    Bitmap newBitmap = Bitmap.createBitmap(
            newP1.getWidth() + newP2.getWidth(),
            Math.max(newP1.getHeight(), newP2.getHeight()),
            Bitmap.Config.RGB_565
    );
    Canvas canvas = new Canvas(newBitmap);
    canvas.drawBitmap(newP1, 0, 0, null);
    canvas.drawBitmap(newP2, newP1.getWidth(), 0, null);
    iv.setImageBitmap(newBitmap);
}

private Bitmap getNewBitmap(@DrawableRes int resId) {
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resId);
    int width = bitmap.getWidth();
    int height = bitmap.getHeight();
    return Bitmap.createBitmap(bitmap, 0, 0, width / 2, height);
}

}
//保存
public static boolean saveBitmap(Bitmap bitmap, File picFile, Bitmap.CompressFormat format) {
if (bitmap == null)
return false;
FileOutputStream fos = null;
try {
fos = new FileOutputStream(picFile);
bitmap.compress(format, 100, fos);
fos.flush();
return true;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return false;
}

public static boolean saveBitmap(Bitmap bitmap, File file) {
    return saveBitmap(bitmap, file, Bitmap.CompressFormat.PNG);
}


查看完整回答
反对 回复 2019-05-16
?
繁星coding

TA贡献1797条经验 获得超4个赞

ImageView img1 = new ImageView(imageView.getContext());
Bitmap bitmap1 = Bitmap.createBitmap(img1.getWidth(),img1.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas1 = new Canvas(bitmap1);
img1.draw(canvas1);

    ImageView img2 = new ImageView(imageView.getContext());
    Bitmap bitmap2 = Bitmap.createBitmap(img2.getWidth(),img2.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas2 = new Canvas(bitmap2);
    img2.draw(canvas2);

    Bitmap bitmap = Bitmap.createBitmap(img1.getWidth() + img2.getWidth(),Math.max(img1.getHeight(),img2.getHeight()),
     Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    canvas.drawBitmap(bitmap1,0f,0f,null);
    canvas.drawBitmap(bitmap2,img1.getWidth(),0f,null);

最后使用bitmap这个对象,没经过测试,不知道行不行


查看完整回答
反对 回复 2019-05-16
  • 3 回答
  • 0 关注
  • 1002 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信