理财秘籍

bitmapsize3dmax导出图片分辨率

winter 0

大家好,今天来为大家分享bitmap size的一些知识点,和3dmax导出图片分辨率的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

本文目录

...bitmap cache size set to 100

芭田股份股票行情

0mb 这个怎么解决在C++中,如何获得位图图像的高度与宽度(不用MFC)3dmax导出图片分辨率android 图片质量压缩和尺寸压缩有什么区别根据hbitmap如何得到图片大小或者保存为文件...bitmap cache size set to 1000mb 这个怎么解决这是因为你渲染的图太大,但是设置里不允许出现这么大的渲染结果。

解决办法

第一,如图1.此处是渲染图时使用的内存大小限制,你加大就行。你现在是1G,设置4G8G的都行,按自己电脑的内存的60%左右为好。

第二,推荐你渲染这种非常大的图时,设置这个如图2.开启vray帧缓冲。去掉第二项存入内存。勾选第三项存入raw,给指定一个文件保存位置。这样的话max会将渲染结果存在硬盘而不是内存。这样只要硬盘空间够,你渲染多巨大的图都行。

同行纯手打,望采纳~

在C++中,如何获得位图图像的高度与宽度(不用MFC)#include<stdio.h>

#include<malloc.h>

#include<stdlib.h>

#include<iostream>

usingnamespacestd;

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

typedefstructtagBITMAPINFOHEADER

{

unsignedlongbiSize;/*指定这个结构的长度,为40*/

longbiWidth;/*指定图象的宽度,单位是象素*/

longbiHeight;/*指定图象的高度,单位是象素*/

unsignedshortbiPlanes;/*必须是1,不用考虑*/

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

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

unsignedlongbiSizeImage;/*指定实际的位图数据占用的字节数*/

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

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

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

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

}BITMAPINFOHEADER;

voidmain()

{

BITMAPINFOHEADERbitmapinfoheader;

FILE*stream;

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

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

fseek(stream,14,1);

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

fclose(stream);

cout<<bitmapinfoheader.biHeight<<endl;

cout<<bitmapinfoheader.biWidth<<endl;

}

调试运行正确128*128

3dmax导出图片分辨率13dmax分辨率怎么调

.1

customize。

.2

viewports。

.3

configuredriver。

.4

backgroundtexturesize和downloadtexturesize。

.5

Matchbitmapascloselyaspossible挑上。

重启3DMAX灯光缓存下,细分值改为1000。

以上就是为你解答希望有用能帮助到你

android 图片质量压缩和尺寸压缩有什么区别‍

这个方法用来将特定格式的压缩图片写入输出流(OutputStream)中,当然例如输出流与文件联系在一起,压缩后的图片也就是一个文件。如果压缩成功则返回true,其中有三个参数:

format是压缩后的图片的格式,可取值:Bitmap.CompressFormat.JPEG、~.PNG、~.WEBP。

quality的取值范围为[0,100],值越小,经过压缩后图片失真越严重,当然图片文件也会越小。(PNG格式的图片会忽略这个值的设定)

stream指定压缩的图片输出的地方,比如某文件。

上述方法还有一个值得注意的地方是:当用BitmapFactorydecode文件时可能返回一个跟原图片不同位深的图片,或者丢失了每个像素的透明值(alpha),比如说,JPEG格式的图片仅仅支持不透明的像素。文章android图片压缩在文末提到的下面这点可能就是这个原因:

当调用bitmap.compress(CompressFormat.JPEG,100,fos);保存为图片时发现图片背景为黑色,如下图:

这时只需要改成用png保存就可以了,bitmap.compress(CompressFormat.PNG,100,fos);,如下图:

下面是质量压缩的代码:

publicstaticvoidcompressBmpToFile(Bitmapbmp,Filefile){

ByteArrayOutputStreambaos=newByteArrayOutputStream();

intoptions=80;//个人喜欢从80开始,

bmp.compress(Bitmap.CompressFormat.JPEG,options,baos);

while(baos.toByteArray().length/1024>100){

baos.reset();

options-=10;

bmp.compress(Bitmap.CompressFormat.JPEG,options,baos);

}

try{

FileOutputStreamfos=newFileOutputStream(file);

fos.write(baos.toByteArray());

fos.flush();

fos.close();

}catch(Exceptione){

e.printStackTrace();

}

}

这段代码来自Android图片压缩总结,我根据自己的需求改了改,但是大同小异,所以就直接贴了。

随着代码中的option逐渐变小,我们可以在logcat中打印baos的大小来查看图片的大小。我们也可以去掉while的循环条件,一直压缩下去看效果,最终一张照片可能就由原来的3、4M变成了几百K甚至几百B了。我在试的过程中将option设置成100,压缩后偶尔会出现一张3、4M的图片经过压缩后竟变成了6、7M,这里还是有点困惑,不知道为什么。

随后,我想把这个压缩后的图片(1、200KB)填充到ImageView中时却失败了,logcat中提示图片过大!这就是文章开头提到的问题,虽然我们通过质量压缩使File形式的图片文件缩小了,但是并没有改变图片的宽高,原先是1080*1920分辨率的图片经压缩后还是1080*1920,而File格式转换成Bitmap格式进入到内存中时,内存是根据图片的像素数量来给图片分配内存大小的,还是有好几M,因此填充ImageView失败。

顺便提一下,可以用bitmap.getByteCount()获取存储bitmap像素的内存大小,但是KITKAT(Android4.4版本)以后用getAllocateByteCount()获取。一般情况下,后者返回值比前者大,比如,当bitmap被重用去decode另外更小的bitmaps时,或者被人为地配置一下属性值,比如setWidth()、setHeight()、reconfigure()时,如果bitmap不做以上操作,二者的返回值应该是一样的。(译文,不太懂)

二、尺寸压缩

特点:通过设置采样率,减少图片的像素,达到对内存中的Bitmap进行压缩

我们主要通过BitmapFactory中的decodeFile方法对图片进行尺寸压缩:

publicstaticBitmapdecodeFile(StringpathName,BitmapFactory.Optionsopts)

publicstaticBitmapdecodeFile(StringpathName,BitmapFactory.Optionsopts)

其中有两个参数:

pathName是图片文件的路径。

opts就是所谓的采样率,它里边有很多属性可以设置,我们通过设置属性来达到根据自己的需要,压缩出指定的图片。其中比较常用的属性有:

booleaninJustDecodeBounds——如果设置为true,则只读取bitmap的宽高,而忽略内容。

intinSampleSize——如果>1,调用decodeFile方法后,就会得到一个更小的bitmap对象(已压缩)。比如设置为2,那么新Bitmap的宽高都会是原Bitmap宽高的1/2,总体大小自然就是原来的1/4了,以此类推。

booleaninPurgeable——如果设置为true,压缩后的图片像素占的内存将会在系统清理内存的时候被回收掉,当像素的信息再次被用到时将会自动重新decode该像素(比如getPixels()时)。(慎用!重复decode可以会造成UI的卡顿,APIlevel21已弃用)

booleaninInputShareable——与inPurgeable配合使用,如果inPurgeable设置成false,自动忽略此值,如果inPurgeable为true,此值决定是否该bitmap能分享引用给输入数据(inputstream,array等),或者必须进行深拷贝。APIlevel21已弃用。(这是译文,不太理解!!!)

下面是一段实现的代码

privateBitmapsizeCompres(Stringpath,intrqsW,intrqsH){

//用option设置返回的bitmap对象的一些属性参数

finalBitmapFactory.Optionsoptions=newBitmapFactory.Options();

options.inJustDecodeBounds=true;//设置仅读取Bitmap的宽高而不读取内容

BitmapFactory.decodeFile(path,options);//获取到图片的宽高,放在option里边

finalintheight=options.outHeight;//图片的高度放在option里的outHeight属性中

finalintwidth=options.outWidth;

intinSampleSize=1;

if(rqsW==0||rqsH==0){

options.inSampleSize=1;

}elseif(height>rqsH||width>rqsW){

finalintheightRatio=Math.round((float)height/(float)rqsH);

finalintwidthRatio=Math.round((float)width/(float)rqsW);

inSampleSize=heightRatio<widthRatio?heightRatio:widthRatio;

options.inSampleSize=inSampleSize;

}

returnBitmapFactory.decodeFile(path,options);//主要通过option里的inSampleSize对原图片进行按比例压缩

}

privateBitmapsizeCompres(Stringpath,intrqsW,intrqsH){

//用option设置返回的bitmap对象的一些属性参数

finalBitmapFactory.Optionsoptions=newBitmapFactory.Options();

options.inJustDecodeBounds=true;//设置仅读取Bitmap的宽高而不读取内容

BitmapFactory.decodeFile(path,options);//获取到图片的宽高,放在option里边

finalintheight=options.outHeight;//图片的高度放在option里的outHeight属性中

finalintwidth=options.outWidth;

intinSampleSize=1;

if(rqsW==0||rqsH==0){

options.inSampleSize=1;

}elseif(height>rqsH||width>rqsW){

finalintheightRatio=Math.round((float)height/(float)rqsH);

finalintwidthRatio=Math.round((float)width/(float)rqsW);

inSampleSize=heightRatio<widthRatio?heightRatio:widthRatio;

options.inSampleSize=inSampleSize;

}

returnBitmapFactory.decodeFile(path,options);//主要通过option里的inSampleSize对原图片进行按比例压缩

}

上面就是简单的质量压缩与尺寸压缩。

根据hbitmap如何得到图片大小或者保存为文件我写过一个从屏幕上截图到clipboard里(相当于按print-screen键,或我这里有一个按Alt+print-screen键),然后存为BMP的子程序。你稍作修改(例如改一下存放的文件名,添主程序和函数调用)就可以用。

//---dibfunctions函数原型-----

intGetBytesPerPixel(intdepth);

intGetBytesPerRow(intwidth,intdepth);

intGetBitmapBytes(intwidth,intheight,intdepth);

voidsave_clipboard_img_to_bmp();

//---------函数定义---------

intGetBytesPerPixel(intdepth)

{return(depth==32?4:3);

}

intGetBytesPerRow(intwidth,intdepth)

{

intbytesPerPixel=GetBytesPerPixel(depth);

intbytesPerRow=((width*bytesPerPixel+3)&~3);

returnbytesPerRow;

}

//bmi.bmiHeader.biWidth,bmi.bmiHeader.biHeight,bmi.bmiHeader.biBitCount

intGetBitmapBytes(intwidth,intheight,intdepth)

{

returnheight*GetBytesPerRow(width,depth);

}

voidsave_clipboard_img_to_bmp()

{

charnameout[80];

HANDLEh_bitmap,h_dib;

BITMAPINFObmi;

HDChDC;

intimageBytes;

BITMAPFILEHEADERhdr;

intscanLineCount;

unsignedchar*img;

if(!OpenClipboard(NULL)){

printf("Cannotopenclipboard\n");

exit(0);

};

if(DEBUG==1)printf("passopenclipboard\n");

//HANDLEGetClipboardData(UINTuFormat);

h_bitmap=GetClipboardData(CF_BITMAP);

h_dib=GetClipboardData(CF_DIB);

if(h_bitmap==NULL||h_dib==NULL){

printf("IgotNULLbitmap:");

}else{printf("Igotbitmap:");};

memcpy(&bmi,h_dib,sizeof(bmi));

printf("%dx%d\n",bmi.bmiHeader.biWidth,bmi.bmiHeader.biHeight);

hDC=CreateCompatibleDC(NULL);//Gdi32.lib.

CloseClipboard

凤凰单枞兰花香功效与作用

();

bmi.bmiHeader.biCompression=BI_RGB;

//possibletousepartofimgagewithimg_w,img_h

imageBytes=GetBitmapBytes(bmi.bmiHeader.biWidth,bmi.bmiHeader.biHeight,bmi.bmiHeader.biBi

股市中老鸭头k线涨幅

tCount);

printf("passGetBitmapBytes=%d\n",imageBytes);

img=(char*)malloc(imageBytes);

if(!img){

printf("Noenoughtmemoryforimg!\n");exit(0);

}

//BITMAPFILEHEADERhdr;

hdr.bfType=((WORD)('M'<<8)|'B');//isalways"BM"

hdr.bfSize=sizeof(BITMAPFILEHEAD

股市中jgc是什么

ER)+sizeof(BITMAPINFOHEADER)

+(bmi.bmiHeader.biClrUsed*sizeof(RGBQUAD))+bmi.bmiHeader.biSizeImage;

hdr.bfReserved1=0;

hdr.bfReserved2=0;

hdr.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)

+(bmi.bmiHeader.biClrUsed*sizeof(RGBQUAD));

scanLineCount=GetDIBits(hDC,h_bitmap,0,bmi.bmiHeader.biHeight,img,&bmi,DIB_RGB_COLORS);

strcpy(nameout,"keyb_tmp.bmp");

if((fout=fopen(nameout,"wb"))==NULL){

printf("\007Cann'topenoutputfile:%s",nameout);exit(1);

};

fwrite(&hdr,sizeof(BITMAPFILEHEADER),1,fout);

fwrite(&bmi,sizeof(BITMAPINFO),1,fout);

fwrite(img,sizeof(unsignedchar),imageBytes,fout);

fclose(fout);

printf("Outputin%s\n",nameout);

}

/*--------------------enddibandbmp--------------------*/

OK,关于bitmap size和3dmax导出图片分辨率的内容到此结束了,希望对大家有所帮助。

相关内容