在Android上实现动态位图设置的KenBurns效果
背景 我正在努力实施" 实际上,我什至很久以前询问过( 在这里 ),在这一点上,我什至不知道它的名字.我确定我找到了一个解决方案,但是有一些问题. 另外,由于有时我有时会显示设备的图像,其中一些甚至需要旋转,因此我使用rotatabledrawabledrawabledrawable(如图所示问题 当前的实现无法处理动态给出的多个位图(例如来自Internet),甚至都不查看输入图像的大小. 相反,它只是以随机的方式进行缩放和翻译,因此可以显示太多/小的缩放,并且可以显示空的空间. 代码 这是与问题相关的代码: private float pickScale() { return MIN_SCALE_FACTOR + this.random.nextFloat() * (MAX_SCALE_FACTOR - MIN_SCALE_FACTOR); } private float pickTranslation(final int valu
UIImageView是否对图像进行缓存?
可能我会问一个同样的问题,该问题是其他人问的(但没有回答): 速度提高第一个uiimageView动画(强制缓存图像) 但是,我的简短问题是: 我在资源中有60张图像,在TimeInterval循环中,我将每次设置为 uiimageView.image n'th 图像. 问题是:第一个动画很糟糕!当我再次以同一uiimageView循环所有图像时,动画是完美的.我们可以在uiimageView中预先缓存图像吗? 编辑:,或者也许我们可以制作一些技巧,使动画平滑? 解决方案 该方法 [UIImage imageNamed:@""] 缓存图像. UIImageView没有.我在一个应用程序中遇到了一个问题,其中有很多图像由于记忆力低而崩溃. 如果我更改为[UIImage imageWithContentsOfFile:@""]不缓存图像. 预先缓存图像,您可以简单地调用[UIImage imageNamed:@""]对于您想要的INIT方法中的所有图像.但
0 2024-02-26
编程技术问答社区
Android ImageView NullPointerException
我有两个图像,一个红灯和一个绿灯.我有一个自定义列表视图,当列表项目不活动时,我想显示一个红灯,并且在活动中有绿灯.按下列表项会激活. 这是我的代码 row.xml main.java ImageView iconLight = (ImageView)findViewById(R.id.iconLight); iconLight.setImageResource(R.drawable.light_on); 我得到一个NullPoInterException执行设置图像资源的行.因此,我进行了一些测试,我删除了将SRC设置在XML文件中
0 2024-02-19
编程技术问答社区
如何通过合并两张图片来创建一个新的图片
我想从两个不同的图像中创建一个新图像.必须结果输出图像 通过使用拖动叠加在另一个图像上,缩放/输出,旋转操作. 我是Android的新手,我该怎么做.我需要使用哪种视图 SurfaceView/ImageView ???? 感谢您的时间. 解决方案 尚不清楚您是否要动态执行此操作(响应用户操作),还是要基于指定的拖放/Zoom/rotate参数生成固定的图像.对于前者,您应该使用自定义视图,可以在onDraw()中进行所有自己的图纸.对于后者,您可以使用位图类来完成此操作.您不需要任何视图.按照以下步骤: 创建想要大小的目标位图. 创建一个画布,将目标位图传递给构造函数.这将创建一个画布,该画布将吸引到目标位图. 创建用于绘画的油漆对象. 使用画布绘制第一个源图像. 将适当的转换应用于油漆对象后绘制覆盖图像. 稍后,您可以在imageView或其他视图类中使用映像(例如TextView).
2 2024-02-11
编程技术问答社区
如何在Android中剪切图像?
是否可以在Android中剪切图像?似乎我找不到任何教程. 解决方案 也许您已经找到了解决方案,但是以防万一,我认为这是您需要的: Bitmap src = BitmapFactory.decodeResource(this.getResources(), drawable.sample); int width = src.getWidth(); int height = src.getHeight(); float skewX = 5.0; float skewY = 6.0; Matrix matrix = new Matrix(); matrix.setSkew(skewX, skewY); Bitmap img = Bitmap.createBitmap(src, 0, 0, width, height, matrix, true); 其他解决方案 这可能会帮助您 bitmap bitmaporg = bitmapfactory.decoderesour
4 2024-02-07
编程技术问答社区
在安卓系统中向画布上添加图像
大家好 我希望您能帮助我了解如何在视图上实现的Ontouchevent上添加图像的概念.到目前为止,这就是我想到的. parent 是在此定制视图中实例化并添加到的活动. @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); } public void insertImage() { if (parent.selected_icon.contentEquals("image1")) { image = getResources().getDrawable(R.drawable.image1); } else if (parent.selected_icon.contentEquals("image1")) { image = ge
2 2024-02-06
编程技术问答社区
Android上的图像处理--我可以使用哪些库?
我需要专门用于图像失真(过滤器,模糊等也受到欢迎;).您是否知道有一些我可以使用的具有适当许可证的库(Apache,Mit,LGPL)?价格合理的礼物图书馆 - 也向他们开放.也可以在C中. 预先感谢 Danail 解决方案 您可能需要查看 opencv 由英特尔开发.它似乎非常成熟且有据可查.当然,它也是开源的.
2 2024-02-03
编程技术问答社区
在安卓系统中裁剪成合适的图像
我已经尝试了一段时间,我想从Bitmap中创建一个墙纸.假设所需的墙纸尺寸为320x480,源图像大小为2048x2048. 我不确定作物 - 拟合是否是正确的术语,但是我想实现的是要获得与所需墙纸大小相等比率的大部分图片(320x480). 因此,在这种情况下,我想从源Bitmap中获取2048x1365或(准确地说是1365.333 ...),然后将其缩小到320x480. 我尝试过的技术是: 1)将位图裁剪成2048x1365首先 bm = Bitmap.createBitmap(bm, xOffset, yOffset, 2048, 1365); 2)将其缩小到320x480 bm = Bitmap.createScaledBitmap(bm, 320, 480, false); 产生了超级误差. 有什么方法可以实现这一目标? 问: dezull 解决方案 感谢开源,我从Android Gallery源代码 cr
4 2024-01-31
编程技术问答社区
如何在安卓系统中用坐标捕捉图像
是Android的新手,我想将我的问题放在您的前面 我想捕获四个坐标之间的图像,如下. 首先,我将图像转换为位图,然后将其设置为相对布局的背景.我知道这四个坐标. 那么,我如何将图像在框中获取并将其设置为另一个布局作为背景. 大家,请让我摆脱这种逻辑.... 解决方案 最后,我找到了解决问题的解决方案,并与您分享 首先,这是基于+12​​级别转换理论完成的. 好的,我的问题在" openCv for android"的帮助下解决了 这是代码.. public class MainActivity extends Activity implements CvCameraViewListener2,OnTouchListener { Bitmap sourceBitmap,descBitmap,sourceBitmap1; ImageView view,view2; SurfaceView amSurfaceView ; Mat mRgba;
10 2024-01-30
编程技术问答社区
寻找快速的图像失真算法
我正在尝试实现使用Shpere失真过滤器的应用程序.我正在使用在这里改变getPixel(getPixel)的位置( )和setPixel()方法.我的问题是,对于Android设备而言,它太慢了,并且有一些应用程序可以比我的方法更快地实现相同的球体(和其他)过滤器. (例如,Picsay Pro App)任何人都可以共享或提供指导以查找或实施快速失真算法. 实现算法的实际过滤器: public boolean sphereFilter(Bitmap b, boolean bSmoothing) { int nWidth = b.getWidth(); int nHeight = b.getHeight(); Point [][] pt = new Point[nWidth][nHeight]; Point mid = new Point(); mid.x = nWidth/2; mid.y = nHeight/2;
4 2024-01-30
编程技术问答社区
使用PorterDuff模式擦除位图部分
我尝试使用Porter-Duff Xfermodes在Android应用中删除位图的一部分. 我的绿色背景被蓝色位图覆盖.当我触摸屏幕时,应该创建覆盖位图中的"孔",从而使绿色背景可见.我的当前代码不是一个孔,而不是一个孔. 以下是我的代码.有什么想法,我在这里做错了什么? /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(new Draw
0 2024-01-27
编程技术问答社区
调整位图大小/比例后图像质量不好
我正在编写纸牌游戏,需要我的卡在不同情况下是不同的尺寸.我将图像存储为位图,以便可以快速绘制并重新绘制它们(用于动画). 我的问题是,无论我如何尝试扩展图像(无论是通过矩阵.我知道这是导致问题的缩放,因为在不调整大小的情况下绘制图像时,图像看起来很完美. 我已经完成了这两个线程中描述的每个解决方案: 在运行时大小的图像的android质量 在运行时调整图像时质量问题 ,但仍然没有到达任何地方. 我用此代码存储我的位图(放入哈希图): cardImages = new HashMap(); cardImages.put(GameUtil.hearts_ace, BitmapFactory.decodeResource(r, R.drawable.hearts_ace)); 并使用此方法(在卡类中)绘制它们: public void drawCard(Canvas c) { //retrieve the card
0 2024-01-27
编程技术问答社区
算法设计。对最突出的颜色进行图像量化
因此,我正在努力从图像中发现的人类所感知的那样提取主要颜色的方法. 举例来说,这是一张照片: https://500px.com/photo/63897015/looking-out-out-for-her-kittens-by-daniel-paulsson 大多数人会认为"主导"的颜色是刺穿眼睛的蓝色.但是,使用标准量化,当您降至16个颜色以下左右时,蓝色完全消失.眼睛只占用了0.2%的画布,因此平均水平根本不起作用. 项目详细信息:我正在构建一个将接受上传的照片或特定颜色的Rails应用程序,并将返回一堆其他具有相似主导颜色的照片.设计师将使用该工具来寻找与其先前的配色方案相匹配的库存摄影.如果我可以解决技术,我还有其他很酷的想法. 当前的研究:我花了最后24小时阅读了有关这些东西的所有信息.在我尝试过的所有服务中,Tineye是唯一做得正确的服务,但它们是关闭的来源.我不能提供超过1个链接,但是您可以Google" Tineye Color"找到它.
2 2024-01-23
编程技术问答社区
手动将一个RGBA像素与一个RGB像素进行alpha混合
我正在尝试在RGB图像(背景图像)上进行RGBA图像(前景图像)的Alpha混合操作.但是,在这样做的同时,我认为我可能正在做错误的Alpha混合操作或做错了.例如,我的RGB图像的像素是(127,127,127)的灰色颜色.我的RGBA图像的像素像素的像素将为(0,0,255).进行混合操作后,最终颜色将为(127,0,255).但是,我认为这更像是一种添加剂混合物,并且与我正在执行的操作不同. 有关我的值的设置方式,请查看此 incPixelColor[0] = 0; (red) incPixelColor[1] = 0; (green) incPixelColor[2] = 255; (blue) incPixelColor[3] = 255; (alpha) currentPixelColor[0] = 127; (red) currentPixelColor[1] = 127; (green) currentPixelColor[2] = 127; (blue)
在大图像中寻找已知的子图像
有人知道在较大图像中找到已知图像的算法(或搜索术语/描述)吗? ,例如 我有一个包含各种按钮和区域(目标)的单个桌面窗口的图像.我也有代码捕获当前桌面的屏幕截图.我想要一种算法,可以帮助我在较大的桌面图像中找到目标图像(确切的X和Y坐标在窗口所在)中.目标图像可能位于较大图像中的任何位置,并且可能完全不完全相同(非常相似但可能确切的B/C显示差异) 有人知道这种算法或类算法吗? 我找到了各种图像分割和计算机视觉算法,但它们似乎旨在"模糊"区域分类,而不是在另一个区域中找到特定图像. ** 我的目标是创建一个框架,鉴于一些种子目标图像,可以在桌面上找到"看",找到目标区域并"观察"它以进行更改. ** 解决方案 您说您的图像可能不完全相同,但是说您不想要"模糊"算法.我不确定这些是否兼容.不过,总的来说,我认为您想看看图像注册算法.有一个开源C ++软件包,称为 itk 可能会提供一些提示.另外, imagej 是一个流行的开源Java软件包.这两个都
10 2024-01-22
编程技术问答社区
图像旋转算法
我正在寻找一种算法,该算法以一些度(输入)旋转图像. public Image rotateImage(Image image, int degrees) (图像实例可以用包含每个像素RGB值的Int []代替, 我的问题是我需要为Javame Midp 2.0项目实现它,因此我必须在版本1.5之前使用JVM上运行的代码 谁能帮我吗? 编辑:我忘了提到我没有可用的SVG API,并且我需要一种按任意程度旋转90-180-270 的方法 另外,没有Java.aw. 解决方案 描述我在互联网上发现的图像旋转算法的最佳页面之一与Dan Bloomberg的优秀 Leptonica库相关.虽然Leptonica库本身是用C编写的,并且对您没有帮助,但他在图像旋转算法上的页面: 绝对值得一读.您很可能想实现他在页面第二部分中描述的区域映射算法的旋转. 其他解决方案 一般解决方案:对于目标图像中的每个像素,将像素与目标像素的坐标中的源图像中的像素一起沿相反的方向
2 2024-01-22
编程技术问答社区
调整图像大小以适应边界框
一个简单的问题,但是由于某种原因,我今天无法弄清楚. 我需要将图像大小调整到最大可能的大小,该尺寸适合在边界框中保持纵横比. 基本上,我正在寻找填写此功能的代码: void CalcNewDimensions(ref int w, ref int h, int MaxWidth, int MaxHeight); 其中W&H是原始高度和宽度(in),新的高度和宽度(OUT),MaxWidth和Maxheight定义了图像必须适合的边界框. 解决方案 查找较小的:MaxWidth / w或MaxHeight / h 然后将w和h乘以那个数字 说明: 您需要找到使图像合适的缩放系数. 要找到宽度的缩放因子s,然后s必须如此: s * w = MaxWidth. 因此,缩放系数为MaxWidth / w. 类似的高度. 需要缩放最大的一个(较小s)是您必须缩放整个图像的因素. 其他解决方案 根据Eric的建议,我会做这样的事情:
2 2024-01-22
编程技术问答社区
如何以编程方式将图像卡通化?
我的应用程序与我想卡通的照片和视频一起使用.因此,我需要一种算法来手动执行此操作(我们使用C ++/QT为我们的产品,其中具有图像操纵类)或一些CLI程序,这些程序将为我使用,我可以从我们自己的应用中调用和使用. 解决方案 以下是一些算法: 中位数或重复的盒子模糊过滤器以获得卡通调色板 编辑:双边过滤应该更好地适合您的需求 最小过滤器(零百分位数)以增强某些类型的边缘 使用RGB颜色立方体中的小副观或球的颜色图像分割 使用边缘检测(例如SOBEL内核或8向边缘跟踪)对分段图像的通用边缘增强 COMPOSIT模糊/中间过滤图像具有增强的边缘 这些都是相当基本的,并且都非常易于实现.请记住,可以使用线性时间复杂性W.R.T.实现中位数和盒子模糊过滤器.内核半径. 更多编辑: 一旦了解黄的算法,实现盒子模糊过滤器就是一个美味的蛋糕. 阅读材料: 快速中值和双边过滤(获取PDF) 中间过滤不变的时间(获得PDF)注意:我有使用Mono/
2 2024-01-22
编程技术问答社区