我最近问了一个问题,为什么我们要使用上面列出的3种不同的图像类型,并得到良好/详细的答复。这也使我提出了其他疑问...
假设我正在使用XCode(使用SWIFT)工作,并且在iPhone上使用特定的UIImage时,具有三个图像尺寸@ 1x,@ 2x,@ 3x。现在,我希望它在iPad上看起来不错,所以我增加了一些缩放比例。但是,这将更改iPad需要的1x,2x,3x图像的尺寸,因此我需要再增加3幅图像以补偿该新尺寸。现在,XCode将如何区分两者?我需要检查正在使用的屏幕尺寸,然后选择图像吗?
我读到资产可以帮助我,但这仅适用于iPhone与iPad,如果我在iPhone 4、5、6和iPad上缩放图像会怎样?那有很多不同的大小和@x图像,我读到Apple不喜欢设备检查,所以我不确定会怎样。
我希望这是有道理的。我得到每个设备的@ 1x,2x,3x,但是如果我的应用是为通用设备设计的,那么如何为适当的设备管理所有这些不同大小的代码?
所以我有点尴尬地问这个,因为它看起来很简陋,但自从开始iOS开发(大约一年的自我/互联网教学),当不使用故事板时,我非常依赖于框架大小和非常谨慎地使用自动布局.在目标CI中发现自己处于需要更频繁使用自动布局的情况,但是使用Swift我可以为框架的x和y起点,它的中心等设置动画......我从来没有遇到过我无法完成的情况想要单独使用帧大小和像素位置,我做了一些相当复杂的视图工作.我的问题是,使用自动布局而不是帧大小和像素位置有什么好处?由于无知和习惯,我不想错过一些很好的性能优势.非常感谢!
我想将图像的像素打印为矩阵。
这是我正在使用的代码:
from PIL import Image
im = Image.open("8Black.png")
pixels = list(im.getdata())
print(pixels)
Run Code Online (Sandbox Code Playgroud)
我使用photoshop创建了图像“8Black.png”并将其涂成黑色。我使用的 python 版本是 3.5.0。但是,当我运行上面的代码时,我得到:
[0,0,0,0,0,0,0,0,0,0,0,0,...,0]
Run Code Online (Sandbox Code Playgroud)
我想得到这个:
[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[...],[...]]
Run Code Online (Sandbox Code Playgroud)
我试着改变这个:
pixels = list(im.getdata())
Run Code Online (Sandbox Code Playgroud)
对此:
pixels = np.matrix(im.getdata())
Run Code Online (Sandbox Code Playgroud)
但还是没有得到我想要的结果。
如何将像素数据作为矩阵获取?我错过了什么?
如何确定画布(具有一定宽度)的像素宽度?
我在AnimatedImage控件中有一个位图,我知道位图的宽度(以像素为单位),我想缩放位图,使其水平地适合画布.我怎样才能确定这个尺度?
注意:我不需要使用RenderTargetBitmap,因为位图已经加载.
我想知道是否有人知道基于 Bresenham 的线算法或任何类似算法来绘制具有特定厚度的线的任何算法。
再想一想,我一直想为每个 setPixel(x,y) 画一个圆圈,例如:
填充圆(x,y,厚度);对于每个 x,y 但这当然会很慢。我也尝试使用字典,但这会立即填满内存。检查我将要绘制的像素是否具有相同的颜色,但这对于大画笔来说也不够有效。
也许我可以根据角度以某种方式绘制半圆?
任何输入将不胜感激。
谢谢。
在阅读了关于这个主题的文字之后,我发现它考虑了原始相邻像素中的16个.我想知道的是它如何计算新像素的颜色值.如果已知16个像素的颜色值,您如何计算新值的值?
我正在为Word 2007编写VBA.
我已经创建了一个UserForm,我需要使用脚本调整大小.
我注意到它不是像素
Me.Width = pixelW // form appears about 20% larger than the pixel width
Run Code Online (Sandbox Code Playgroud)
而其不缇要么
Me.Width = (((1 / TwipsPerPixelX()) * pixelW)) / 1) // form appears very small
Run Code Online (Sandbox Code Playgroud)
那么Office 2007 VBA中的表单宽度和高度如何测量?
给定任意像素的连续绘制(例如在HTML5 Canvas上)是否有任何算法用于找到轴对齐的边界框,这比仅查看每个像素并记录最小/最大x/y值更有效?
在Eclipse的AVD中,我创建了两个除密度值之外相同的设备.装置1具有abstracted LCD density240; 设备2具有160.两者的分辨率为480x800.
有人可以向我解释为什么设备1屏幕上的元素看起来"更大"吗?由于它们具有相同的分辨率,它们不应该显示相同数量的像素吗?如果有的话,因为设备1具有更高的密度,不应该显示更多的细节/屏幕空间?
设备1
设备2
Screeshots - (点击查看大图)
如上所示,我在两个设备上的随机屏幕位置绘制一个半径为15dp的圆.设备2上的圆圈肯定更小,操作栏也是如此.为什么是这样?
使用32位TBitmap时,我从Canvas.Pixels切换到ScanLine.
然后我将值设置为红色,只是发现它显示为蓝色.
知道为什么吗?
这是一段代码摘录:
procedure TForm1.FormPaint(Sender: TObject);
var
varBitmap: TBitmap;
pLock: PIntegerArray;
iColor: integer;
begin
varBitmap := TBitmap.Create;
varBitmap.PixelFormat := pf32bit;
varBitmap.Width := 800;
varBitmap.Height := 600;
// Set Pixels to Red
varBitmap.Canvas.Pixels[0, 0] := $0000FF;
// Shows $FF0000 (blue)
pLock := varBitmap.ScanLine[0];
iColor := pLock[0];
ShowMessageFmt('%x', [iColor]);
// Set ScanLine to Red
pLock[0] := $0000FF;
// Displays a blue pixel
Canvas.Draw(0, 0, varBitmap);
end;
Run Code Online (Sandbox Code Playgroud)
似乎TColor与内存中的内容不同,但这没有任何意义.
欢迎任何建议.;)