android怎么获取图片的大小

android怎么获取图片的大小,第1张

1、控制大小和位置

/

获取对话框的窗口对象及参数对象以修改对话框的布局设置,

可以直接调用getWindow(),表示获得这个Activity的Window

对象,这样这可以以同样的方式改变这个Activity的属性

/

Window dialogWindow = dialoggetWindow();

WindowManagerLayoutParams lp = dialogWindowgetAttributes();

dialogWindowsetGravity(GravityLEFT | GravityTOP);

/

lpx与lpy表示相对于原始位置的偏移

当参数值包含GravityLEFT时,对话框出现在左边,所以lpx就表示相对左边的偏移,负值忽略

当参数值包含GravityRIGHT时,对话框出现在右边,所以lpx就表示相对右边的偏移,负值忽略

当参数值包含GravityTOP时,对话框出现在上边,所以lpy就表示相对上边的偏移,负值忽略

当参数值包含GravityBOTTOM时,对话框出现在下边,所以lpy就表示相对下边的偏移,负值忽略

当参数值包含GravityCENTER_HORIZONTAL时

,对话框水平居中,所以lpx就表示在水平居中的位置移动lpx像素,正值向右移动,负值向左移动

当参数值包含GravityCENTER_VERTICAL时

,对话框垂直居中,所以lpy就表示在垂直居中的位置移动lpy像素,正值向右移动,负值向左移动

gravity的默认值为GravityCENTER,即GravityCENTER_HORIZONTAL |

GravityCENTER_VERTICAL

本来setGravity的参数值为GravityLEFT | GravityTOP时对话框应出现在程序的左上角,但在

我手机上测试时发现距左边与上边都有一小段距离,而且垂直坐标把程序标题栏也计算在内了,

GravityLEFT, GravityTOP, GravityBOTTOM与GravityRIGHT都是如此,据边界有一小段距离

/

lpx = 100; // 新位置X坐标

lpy = 100; // 新位置Y坐标

lpwidth = 300; // 宽度

lpheight = 300; // 高度

lpalpha = 07f; // 透明度

// 当Window的Attributes改变时系统会调用此函数,可以直接调用以应用上面对窗口参数的更改,也可以用setAttributes

// dialogonWindowAttributesChanged(lp);

dialogWindowsetAttributes(lp);

/

将对话框的大小按屏幕大小的百分比设置

/

// WindowManager m = getWindowManager();

// Display d = mgetDefaultDisplay(); // 获取屏幕宽、高用

// WindowManagerLayoutParams p = getWindow()getAttributes(); // 获取对话框当前的参数值

// pheight = (int) (dgetHeight() 06); // 高度设置为屏幕的06

// pwidth = (int) (dgetWidth() 065); // 宽度设置为屏幕的095

// dialogWindowsetAttributes(p);

首先,用CFile需要自己处理文件头和文件信息,比较繁琐,处理BMP,可以用LoadImage获取位图句柄或者CImage类处理更方便。

CFile处理,获取指针后要自己解析文件头,BITMAPFILEHEADER和BITMAPINFOHEADER,这两个结构读取成功后,就可以从结构中取得宽高信息了,你说的两个是像素为单位的,还有其它信息可以对比,注意的是,实际位图大小中,有4整数倍取整,因此宽高相乘可能不等于大小。

getBounds获取宽高。

setBounds设置宽高,或者scaleX,scaleY设置宽高的缩放。

>

#include <stdioh>

#include <malloch>

#include <stdlibh>

#include <iostream>

using namespace std;

/位图信息头BITMAPINFOHEADER,这个结构的长度是固定的,为40个字节其定义如下:/

typedef struct tagBITMAPINFOHEADER

{

unsigned long biSize; /指定这个结构的长度,为40/

long biWidth; /指定图象的宽度,单位是象素/

long biHeight; /指定图象的高度,单位是象素/

unsigned short biPlanes; /必须是1,不用考虑/

unsigned short biBitCount; /指定表示颜色时要用到的位数,常用的值为1(黑白二色图),4(16色图),8(256色),24(真彩色图)/

unsigned long biCompression; /指定位图是否压缩,有效的值为BI_RGB,BI_RLE8,BI_RLE4,BI_BITFIELDS/

unsigned long biSizeImage; /指定实际的位图数据占用的字节数/

long biXpolsPerMeter; /指定目标设备的水平分辨率,单位是每米的象素个数。/

long biYpelsPerMeter; /指定目标设备的垂直分辨率,单位同上。/

unsigned long biClrUsed; /指定本图象实际用到的颜色数,如果该值为零,则用到的颜色数为2的biBitCount次方。/

unsigned long biClrImportant; /指定本图象中重要的颜色数,如果该值为零,则认为所有的颜色都是重要的。/

}BITMAPINFOHEADER;

void main()

{

BITMAPINFOHEADER bitmapinfoheader;

FILE stream;

memset(&bitmapinfoheader,0,sizeof(BITMAPINFOHEADER));

stream=fopen("E:\\3bmp","r");

fseek(stream,14,1);

fread((char)&bitmapinfoheader,sizeof(BITMAPINFOHEADER),1,stream);

fclose(stream);

cout<<bitmapinfoheaderbiHeight<<endl;

cout<<bitmapinfoheaderbiWidth<<endl;

}

调试运行正确 128128

是本地的吗

如果是本地,可以通过BitmapFactorydecodeResource(res,id);

来获取到这个Bitmap,获取到这个Bitmap,你要的大小都出来了啊

如果是网络,也可以通过BitmapFactory的获取

1、inJustDecodeBounds:

如果将这个值置为true,那么在解码的时候将不会返回bitmap,只会返回这个bitmap的尺寸。这个属性的目的是,如果你只想知道一个bitmap的尺寸,但又不想将其加载到内存时。这是一个非常有用的属性。

2、inSampleSize:

这个值是一个int,当它小于1的时候,将会被当做1处理,如果大于1,那么就会按照比例(1 / inSampleSize)缩小bitmap的宽和高、降低分辨率,大于1时这个值将会被处置为2的倍数。例如,width=100,height=100,inSampleSize=2,那么就会将bitmap处理为,width=50,height=50,宽高降为1 / 2,像素数降为1 / 4。

3、inPreferredConfig:

这个值是设置色彩模式,默认值是ARGB_8888,在这个模式下,一个像素点占用4bytes空间,一般对透明度不做要求的话,一般采用RGB_565模式,这个模式下一个像素点占用2bytes。

4、inPremultiplied:

这个值和透明度通道有关,默认值是true,如果设置为true,则返回的bitmap的颜色通道上会预先附加上透明度通道。

5、inDither:

这个值和抖动解码有关,默认值为false,表示不采用抖动解码。

6、nDensity:

表示这个bitmap的像素密度(对应的是DisplayMetrics中的densityDpi,不是density)。

7、inTargetDensity:

表示要被画出来时的目标像素密度(对应的是DisplayMetrics中的densityDpi,不是density)。

8、inScreenDensity:

表示实际设备的像素密度(对应的是DisplayMetrics中的densityDpi,不是density)。

9、inScaled:

设置这个Bitmap是否可以被缩放,默认值是true,表示可以被缩放。

10、inPurgeable和inInputShareable:

这两个值一般是一起使用,设置为true时,前者表示空间不够是否可以被释放,后者表示是否可以共享引用。这两个值在Android50后被弃用。

11、inPreferQualityOverSpeed:

这个值表示是否在解码时有更高的品质,仅用于JPEG格式。如果设置为true,则会有更高的品质,但是会解码速度会很慢。

12、outWidth和outHeight:

表示这个Bitmap的宽和高,一般和inJustDecodeBounds一起使用来获得Bitmap的宽高,但是不加载到内存。

13、inbitMap

如果这个值被设置了true,则可以被复用

Bitmap的加载方式:

1BitmapFactorydecodeBetyArray();//字节数组

2BitmapFactorydecodeFile();//文件路径

3BitmapFactorydecodeResource();//资源ID

4BitmapFactorydecodeStream();//流

BitmapFactoryOptions的作用:

1防止内存溢出;

2节省内存开销;

3系统更流畅;

以上就是关于android怎么获取图片的大小全部的内容,包括:android怎么获取图片的大小、VC++中,用CFile类读取一张bmp图片,怎样获取该图片的宽和高信息(width和heigth应该是像素为单位的)、createjs,easeljs 如何获取图片的宽度和设置图片宽高等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9318971.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存