我正在使用我的应用程序中的相机拍照,并将照片通过电子邮件发送到某个电子邮件地址。现在我希望通过电子邮件发送的图片的物理尺寸是10厘米宽,8厘米高。我试过的代码如下:
1)在xml中声明一个图像视图,如下所示:
<ImageView
android:id="@+id/imageView3"
android:layout_width="100mm"
android:layout_height="80mm"
android:src="@drawable/ic_launcher" />2)和更高版本的java文件:
final BitmapFactory.Options opts = new BitmapFactory.Options ();
opts.inSampleSize = 2;
final ImageView thumbNail = (ImageView)findViewById(R.id.imageView3);
thumbNail.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// TODO Auto-generated method stub
thumbNail.setImageBitmap(Bitmap.createScaledBitmap (BitmapFactory.decodeFile(myPhoto.getPath(), opts), thumbNail.getWidth(), thumbNail.getHeight(), false));
}
});根据文档,生成的位图应该具有10厘米的宽度和8厘米的高度。但是在xml文件中,在这些行有警告
android:layout_width="100mm"
android:layout_height="80mm"
Avoid using "mm" as units (it does not work accurately on all devices); use "dp" instead.所以我不知道该怎么做。所以请给我一个可以在所有设备上工作的解决方案。
发布于 2013-07-04 21:38:49
我已经使用了WarrenFaiths方向,并提出了以下解决方案。
DisplayMetrics metrics = activity.getResources().getDisplayMetrics();
totalDIP_X = metrics.xdpi;
totalDIP_Y = metrics.ydpi;totalDIP_X和totalDIP_Y表示电话每英寸下降的总次数。
因此,如果你希望手机上的位图是5cms*5cms,相当于1.968英寸*1.968英寸,我们应该使用下面的代码。
imageView1.setImageBitmap(Bitmap.createScaledBitmap (aBitmap, (int)(1.968*totalDIP_X), (int)(1.968*totalDIP_Y), false));发布于 2017-02-02 15:07:26
这?
public static int mm2pixels(int val, Context current) {
DisplayMetrics metrics = current.getResources().getDisplayMetrics();
return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, val, metrics);
}https://stackoverflow.com/questions/17450374
复制相似问题