我知道色带是一个问题的老栗子,之前已经讨论了很多次提供了各种解决方案(基本上归结为使用32位,或使用抖动).事实上不久前我问过并随后回答了我自己的问题.当时,我还以为我把在回答这个问题的解决方案(这是应用setFormat(PixelFormat.RGBA_8888)的Window,也给Holder在的情况下SurfaceView),在我的很好的应用已经解决了这个问题.至少解决方案使得渐变在我当时开发的设备上看起来非常好(很可能是Android 2.2).
我现在正在使用HTC One X(Android 4.0)和华硕Nexus 7(Android 4.1)进行开发.我试图做的是在a的整个区域应用灰色渐变SurfaceView.即使我认为确保包含Window和Holder配置为32位颜色,我得到可怕的绑定工件.事实上,在Nexus 7上,我甚至看到了文物的移动.这不仅发生在SurfaceView当然连续绘制的情况下,而且还发生在View我正常添加的法线中,以便为测试目的绘制完全相同的梯度,这将绘制一次.这些工件的存在方式当然看起来非常糟糕,实际上就像观看信号较差的模拟电视一样.无论是View和SurfaceView展览完全相同的器物,它们一起四处走动.
我的目的是在整个过程中使用32位,而不是使用抖动.我的印象Window是默认情况下在Android 4.0之前默认为32位.通过应用RGBA_8888在SurfaceView我本来期望一切都已经32位全境,从而避免任何文物.
我注意到在SO上还有其他一些问题,人们观察到RGBA_88884.0/4.1平台上似乎不再有效.
这是我的Nexus 7的截图,View顶部和SurfaceView下面都有法线,两者都使用相同的渐变Canvas.当然,它不会像在显示屏上那样显示工件,因此显示此屏幕抓取可能毫无意义.我想强调的是,在Nexus的屏幕上,条带确实看起来很糟糕.编辑:其实,真正的截图没有显示的文物在所有.我在Nexus 7上看到的文物并不是统一的条带; 它看起来很随意.

Activity用于创建以上内容的测试:
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Shader;
import android.os.Bundle; …Run Code Online (Sandbox Code Playgroud) 我通过谷歌搜索about.wav文件格式,我所能想到的是帧是由样本(某些定义的位深度)组成的,而wav立体声文件有多个称为通道的东西....混淆是否是一个通道是由框架组成的?播放音频文件时,所有频道都播放吗?如果一个通道由帧组成,那么所有通道的长度是否相等(按比特)?如果有人可以回答,我必须在播放波形的wav文件时单独显示每个通道
在我运行Android 5.0.1的LG G Watch上,我一直在努力让渐变显得平滑.
在你标记为重复之前,我已经尝试了几个帖子的每个答案(比如为什么android在显示png文件时会丢失图像质量?,是否可以抖动渐变可绘制?,android:dither ="true"不会抖动,有什么不对?,彩色条带Android解决方案,色带,并与梯度文物尽管使用RGBA_8888无处不在,颜色只能在Android 4.0以上版本的条带,在Android的可怕的背景图像质量),但似乎都不适用.
1)从最新的Android SDK加载示例'Wearable:Watch View Stub'项目
2)将rect_background.xmldrawable 更改为:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/rect_corner_radius"/>
<gradient android:startColor="@color/light_grey"
android:endColor="@color/white"
android:angle="90"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
3)这是仿真器上的样子

4)这是我从设备进行屏幕捕获时的样子:

5)但是当我亲眼看到它时,有一种可怕的条纹:(在现实生活中看起来更糟糕;图像不公正)

以下是亲眼看到的模拟图像(128种颜色):

我也尝试过:
使用100质量的jpeg.
在创建布局之前和之后,在Activity中手动将PixelFormat设置为RGBA_8888
所有这些都以同样的方式出现.
还有其他人看到这个问题吗?根据这个网站,LG G Watch的颜色深度为24位,每通道应为8位.设备上的正常图像显示正确 - 没有明显的条带.
我正在开发一个打印图像文件夹的应用程序,包括JPEG和TIFF.TIFF图像通常是黑白(1bpp).
加载图像后,我想确定图像是彩色还是黑白或灰度,这样我就可以将图像发送到正确的打印机(彩色打印机或黑白打印机).
我正在使用Bitmap构造函数image = new Bitmap(filename);来加载图像.
编辑:检查像素深度的答案非常适合B&W.有关检查图像是否为灰度而不迭代每个像素的任何想法?
我想用sox减少一些mp3音频的文件大小.我想我可以将立体声降低到只有1个声道(即单声道),降低采样率并减少比特深度.我觉得似乎sox不能做到这一点.这是真的还是我做得对吗?
$ sox -r 8000 -c 1 2008-12-28-2.MP3 foo.mp3
sox WARN formats: can't set sample rate 8000; using 44100
sox WARN formats: can't set 1 channels; using 2
Run Code Online (Sandbox Code Playgroud) 我正在使用matplotlib通过savefig生成一些数字.这些数字是黑白的,需要以TIFF格式以非常高的分辨率(1000 dpi)保存.因此,以较小的位深度保存它们以便使用较少的存储器将是有益的.
为此,我的问题是:在使用matplotlib保存数字时如何指定位深度?
谢谢!
bitsPerComponent表示最大为8,但是几个堆栈溢出问题暗示支持 16 。
在PHP代码中,给定一个.png图像路径,我需要检测该图像的位深度.我怎样才能做到这一点?
我尝试使用getImageSize()并读取bits如下示例代码,但对于24位/ 32位图像,它总是返回'8'.
请帮忙.
class Utils {
//Ham de lay bits cua image
public static function getBits($image) {
$info = getImageSize($image);
return $info['bits'];
}
}
Run Code Online (Sandbox Code Playgroud) 我可以从 CLI 执行什么命令或一系列命令来递归遍历目录树并将该树中所有 PNG 文件的位深度从 24bpp 减少到 16bpp?命令应该保留 alpha 层并且不应该增加 PNG 的文件大小 - 事实上减少会更可取。
我有一个基于 OSX 的系统可供我使用,并且熟悉该find命令,因此我真的更想找到合适的 PNG 实用程序命令。
是否可以使用 ffprobe 或 ffmpeg 来计算视频文件的位深度?我特别想知道我的视频的每通道 (bpc) 有多少位。8 是典型的,但一些更高级的编解码器可以使用更高的位深度,并且我不确定如何使用 ffprobe 获取此信息,或者是否可能。具体来说,我有使用 AVC-Intra Class 100 1080p 59.94 fps 编解码器编码的视频,但我不确定 ffprobe 是否可以从此类文件中获取位深度。如果是这样,你会怎么做?
我正在寻找一种快速,最好是标准的库机制来确定wav文件的位深度,例如“ 16位”或“ 24位”。
我正在使用对Sox的子过程调用来获取过多的音频元数据,但是子过程调用非常慢,并且我目前只能从Sox可靠地获得的唯一信息是位深度。
内置的wave模块不具有“ getbitdepth()”之类的功能,并且与24位的wav文件也不兼容-我可以使用wave模块使用“ tryexcept”来访问文件元数据(如果可以,请手动记录它是16位的),然后调用sox(在sox将执行分析以准确记录其位深度的位置)上。我担心的是,这种方法感觉像是猜测。如果读取8位文件怎么办?如果不是,我将手动分配16位。
SciPy.io.wavefile也与24位音频不兼容,因此会产生类似的问题。
本教程非常有趣,甚至包括一些非常低级的脚本示例(至少对于Python来说是低级),这些示例可从wav文件头中提取信息-不幸的是,这些脚本不适用于16位音频。
有什么方法可以简单地(无需调用sox)确定我要检查的wav文件的位深度?
我正在使用的wave标头解析器脚本如下:
import struct
import os
def print_wave_header(f):
'''
Function takes an audio file path as a parameter and
returns a dictionary of metadata parsed from the header
'''
r = {} #the results of the header parse
r['path'] = f
fin = open(f,"rb") # Read wav file, "r flag" - read, "b flag" - binary
ChunkID=fin.read(4) # First four bytes are ChunkID which must be "RIFF" in ASCII …Run Code Online (Sandbox Code Playgroud) 我想将一个 numpy 数组从int32类型转换为int16类型。
我有一个int32名为的数组array_int32,我正在将其转换为int16.
import numpy as np
array_int32 = np.array([31784960, 69074944, 165871616])`
array_int16 = array_int32.astype(np.int16)
Run Code Online (Sandbox Code Playgroud)
转换后,将array_int16变成零数组。我不知道我在做什么错误。有人可以帮助我吗?
我对 vavepal wabbit 比较陌生,想了解 -b 参数(特征表中的特征位)。
我的训练数据是这样的。总共有大约100万个单词。
1 | a = "word" b ="word131232" c="word1233" d = "word123124" e = "word23145"
Run Code Online (Sandbox Code Playgroud)
但是,每行只有 5 个特征。我应该使用多少位?我尝试运行它,似乎随着示例数量的增加,功能集的数量似乎也在增加。我似乎不明白为什么会这样。
bit-depth ×13
android ×2
audio ×2
color-depth ×2
png ×2
python ×2
sox ×2
bitmap ×1
bpp ×1
c# ×1
cgimage ×1
channel ×1
codec ×1
colors ×1
command-line ×1
compression ×1
ffmpeg ×1
ffprobe ×1
hash ×1
image ×1
macos ×1
matplotlib ×1
mp3 ×1
numpy ×1
parameters ×1
php ×1
python-3.x ×1
quartz-2d ×1
sample-rate ×1
surfaceview ×1
video ×1
vowpalwabbit ×1
wav ×1
wave ×1
wear-os ×1