可以使用android?
在QR码图像的中间添加徽标图像我已经生成了QR码,但现在需要在QRcode中间插入徽标图像。
有没有办法实现这一目标。
这是我的QR码生成代码:
Bitmap myLogo = BitmapFactory.decodeResource(getResources(),R.drawable.image); public void onClick(查看v){
EditText qrInput = (EditText) findViewById(R.id.qrInput);
String qrInputText = qrInput.getText().toString();
Log.v(LOG_TAG, qrInputText);
//Find screen size
WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);
Display display = manager.getDefaultDisplay();
Point point = new Point();
// display.getSize(point);
int width = point.x;
int height = point.y;
int smallerDimension = width < height ? width : height;
smallerDimension = smallerDimension * 3/4;
//Encode with a QR Code image
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(qrInputText,null,Contents.Type.TEXT,BarcodeFormat.QR_CODE.toString(),smallerDimension);
try {
Bitmap bitmap = qrCodeEncoder.encodeAsBitmap();
ImageView myImage = (ImageView) findViewById(R.id.imageView1);
myImage.setImageBitmap(bitmap);
} catch (WriterException e) {
e.printStackTrace();
}
}
我不知道有人可以指导我前进。
提前感谢帮助我们的心。
这是我实施的方式:
Bitmap myLogo = BitmapFactory.decodeResource(getResources(), R.drawable.image);
public void onClick(View v) {
// switch (v.getId()) {
// case R.id.button1:
EditText qrInput = (EditText) findViewById(R.id.qrInput);
String qrInputText = qrInput.getText().toString();
Log.v(LOG_TAG, qrInputText);
//Find screen size
WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);
Display display = manager.getDefaultDisplay();
Point point = new Point();
// display.getSize(point);
int width = point.x;
int height = point.y;
int smallerDimension = width < height ? width : height;
smallerDimension = smallerDimension * 3/4;
//Encode with a QR Code image
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(qrInputText,
null,
Contents.Type.TEXT,
BarcodeFormat.QR_CODE.toString(),
smallerDimension);
try {
Bitmap bitmap = qrCodeEncoder.encodeAsBitmap();
Bitmap mergeBitmaps(Bitmap bmp1; Bitmap bmp2)
{
Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp1, new Matrix(), null);
canvas.drawBitmap(bmp2, 0, 0, null);
return;
}
ImageView myImage = (ImageView) findViewById(R.id.imageView1);
myImage.setImageBitmap(mergeBitmaps);
} catch (WriterException e) {
e.printStackTrace();
}
答案 0 :(得分:3)
您有QR码的位图吗?右
现在创建徽标的其他位图。
如果您的徽标位于drawable-xxx文件夹中,则使用下面的代码将您的drawable转换为位图。
Bitmap myLogo = BitmapFactory.decodeResource(getResources(), R.drawable.myLogo);
现在你有2个位图图像。使用下面的代码来合并它们
public static Bitmap mergeBitmaps(Bitmap bmp1, Bitmap bmp2) {
Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp1, new Matrix(), null);
canvas.drawBitmap(bmp2, 0, 0, null);
return bmOverlay;
}
之后。将位图设置为图像视图
希望这有帮助
<强>更新强>
查看下面的代码。我已经在这个
上做了一个示例项目package com.mergebitmaps;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import com.example.mergebitmap.R;
public class MergeBitmaps extends Activity {
private Button btnMerge;
private ImageView imgTest;
private Bitmap bitLogo, bitQrCode, bitMerged;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.merge_bitmap);
btnMerge = (Button) findViewById(R.id.button1);
imgTest = (ImageView) findViewById(R.id.imageView1);
}
@Override
protected void onStart() {
super.onStart();
bitQrCode = BitmapFactory.decodeResource(getResources(),
R.drawable.qr_code);
bitLogo = BitmapFactory.decodeResource(getResources(),
R.drawable.my_logo);
btnMerge.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
bitMerged = mergeBitmaps(bitLogo, bitQrCode);
imgTest.setImageBitmap(bitMerged);
}
});
}
public static Bitmap mergeBitmaps(Bitmap bmp1, Bitmap bmp2) {
Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(),
bmp1.getHeight(), bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp1, new Matrix(), null);
canvas.drawBitmap(bmp2, 0, 0, null);
return bmOverlay;
}
}
这是我的布局文件
<?xml version="1.0" encoding="utf-8"?>
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Button" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button1"
android:scaleType="centerInside"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
这是输出
这里是我获得png图像的图像链接
QR码图片链接https://cdn1.iconfinder.com/data/icons/ios7-line/512/QR_code.png
Chrome徽标图片链接http://www.html5rocks.com/static/images/tutorials/easy-hidpi/chrome2x-8bit.png