草庐IT

java - 在 Java 中为具有透明度的灰度图像着色的合适方法是什么?

我正在制作一个头像生成器,其中头像组件来自具有透明度的PNG文件。这些文件类似于body_1.png或legs_5.png。透明度在零件周围但不在零件内部,并且图像都是灰度的。零件分层很好,我可以得到一个灰度头像。我希望能够动态地为这些部分着色,但到目前为止我的运气并不好。我试过将像素数据从RGB转换为HSL并使用原始像素的L值,同时提供新颜色的H值,但结果不是很好。我看过Colorizegrayscaleimage但我似乎无法使他所说的在Java中起作用。我最终得到的图像到处都是相当明亮的霓虹色。我想要的是保持透明度,同时对灰度部分进行着色。黑色轮廓应该仍然是黑色,白色高光区域应该仍

java - JNA 二维数组

我尝试用JNA在C中调用一个short**。C看起来像这样:voidcompute(short**in,introw,intcol){for(inti=0;i从JNA传递short[][]无效。JNA文档说“要映射native多维数组,请使用一维Java数组”,但它不起作用。调用时'nativeLib.compute(newshort[]{1,2,3,4},2,2);我得到:java.lang.Error:com.sun.jna.Native.invokeVoid(NativeMethod)上的无效内存访问似乎需要一个PointerByReference,我尝试用包含短值的Pointe

Java 后缀定界符

必须使用后缀定界符来表示源代码中使用的常量类型,例如L表示long。但是,对于shorts和bytes没有定界符,所以我需要像这样显式地转换常量值:shortx=(short)0x8000;我想知道Java是否在编译后的字节码中采取了额外的步骤来实际将其从整数类型转换为短整数类型,或者它是否知道这将适合一个单词并按原样使用常量?否则,有没有办法让我可以像这样在数字后缀来表示短或字节? 最佳答案 IwaswonderingifJavatakesextrastepsinthecompiledbytecodetoactuallyconve

java - 数值提升是否适用于 Java 中的常量?

这个问题在这里已经有了答案:WhycannotIaddtwobytesandgetanintandIcanaddtwofinalbytesgetabyte?(3个答案)WhydoesJavarequireanexplicitcastonafinalvariableifitwascopiedfromanarray?(4个答案)Primitivetype'short'-castinginJava(11个答案)Javachartobytecasting(3个答案)关闭4年前。§5.1.2和§5.6.2不要提及常量的数字提升和扩大是如何工作的。以下给出了预期的错误:shorta=2;short

java - 作者为什么提出HBase Tall-Thin schema over Short-Wide 里面描述的?

我正在阅读有关Tall-Thin与Short-WideHBase模式设计的文章,作者提出了以下我不理解的推理:It'sbesttoconsidertheTall-Thindesignasweknowitwillhelpinfasterdataretrievalbyenablingustoreadthesinglecolumnfamilyforuserblogentriesatonceinsteadoftraversingthroughmanyrows.Also,sinceHBasesplitstakeplaceonrows,datarelatedtoaspecificusercanbe

java - 为什么在 JVM 中 Integer 存储为 byte 和 short?

这是一段代码publicclassClassifier{publicstaticvoidmain(String[]args){Integerx=-127;//thisusesbipushIntegery=127;//thisusebipushIntegerz=-129;//thisusesipushIntegerp=32767;//maximumrangeofshortstillsipushIntegera=128;//usesipushIntegerb=129786;//invokesvirtualmethodtogetIntegerclass}}这是部分字节码stack=1,loc

java - java中short和int的行为

我在scjp准备书中看到了这一道题。publicclassYikes{publicstaticvoidgo(Longn){System.out.println("Long");}publicstaticvoidgo(Shortn){System.out.println("Short");}publicstaticvoidgo(intn){System.out.println("int");}publicstaticvoidmain(String[]args){shorty=6;longz=7;go(y);go(z);}}输出是intLong。我正在将short数据类型变量传递给重载方法

java - 将 short[] 转换为灰度图像

我正在使用aparapi编写一个Buddhabrot分形生成器。我让其中的OpenCL部分开始工作,生成了一个代表每个像素的一维数组。我将最终图像的尺寸作为最终整数,并编写了代码来获取该数组中任意点的索引。我想将其另存为图像,并尝试将BufferedImage与TYPE_USHORT_GRAY一起使用。这是我到目前为止所拥有的:BufferedImageimage=newBufferedImage(VERTICAL_PIXELS,HORIZONTAL_PIXELS,BufferedImage.TYPE_USHORT_GRAY);for(inti=0;i问题是,我不知道将RGB设置为什么

java - 为什么 Java 中的 FileInputStream 读取方法返回一个 int,而不是一个 short?

我知道byte的类型不足以包含读取方法的结果。所以,read方法返回的是int类型的值。但我认为short类型比int更有效。它可以包含范围-256~255的值。为什么read方法返回的是int,而不是short? 最佳答案 Javadocumentationonprimitivetypes建议应该使用short而不是int来“在大型数组中节省内存”:short:Theshortdatatypeisa16-bitsignedtwo'scomplementinteger.Ithasaminimumvalueof-32,768andam

java - 使用 byte、short 和其他基本类型

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion为什么我不经常看到它们。我只看到它们主要用于网络,其中大小确实很重要。但是,例如,我有一个变量只使用1-10范围内的数字,我不应该使用字节吗?我习惯于使用尽可能小的内存编写C/C++代码,为什么在Java中不是这样?