GVKun编程网logo

使用CSS模糊图像的一部分(使用css模糊图像的一部分是)

10

在本文中,您将会了解到关于使用CSS模糊图像的一部分的新资讯,同时我们还将为您解释使用css模糊图像的一部分是的相关在本文中,我们将带你探索使用CSS模糊图像的一部分的奥秘,分析使用css模糊图像的一

在本文中,您将会了解到关于使用CSS模糊图像的一部分的新资讯,同时我们还将为您解释使用css模糊图像的一部分是的相关在本文中,我们将带你探索使用CSS模糊图像的一部分的奥秘,分析使用css模糊图像的一部分是的特点,并给出一些关于c – cv :: warpPerspective仅显示扭曲图像的一部分、CSS sprite图像背景 – 重复它的一部分、css – ie11翻译缩放模糊图像、delphi – 如何绘制图像的一部分?的实用技巧。

本文目录一览:

使用CSS模糊图像的一部分(使用css模糊图像的一部分是)

使用CSS模糊图像的一部分(使用css模糊图像的一部分是)

我的图像有问题.我试图模糊图像的一部分,但我的解决方案无法正常工作.
请看一下这段代码:

HTML文件

<div id="image">
    <div></div>
</div>

CSS文件

#image {
    width: 940px;
    height: 360px;
    background-image: url('../img/photo.png');
}

#image .blur {
    background-image: url('../img/photo.png');
    background-position: center right;
    -webkit-filter: blur(3px);
    -moz-filter: blur(3px);
    -o-filter: blur(3px);
    -ms-filter: blur(3px);
    filter: blur(3px);
    filter: blur(3px);
    float: right;
    height: 100%;
    width: 360px;
}

CSS中有可能吗?

解决方法

我已经将外部div的overflow属性设置为hidden,将内部div的margin-right设置为-1,它就像魅力一样.

#image {
    ...
    overflow: hidden;
}

#image .blur {
    ...
    margin-right: -1px;
}

这是JSFiddle中的工作示例.

c – cv :: warpPerspective仅显示扭曲图像的一部分

c – cv :: warpPerspective仅显示扭曲图像的一部分

我通过使用getHomography和warpPerspective将图像从前视角更改为出价视图.

它的工作原理是图像扭曲到所需的视角,但裁剪关闭.它将扭曲的图像移动到图像框之外.我假设原因是因为操作导致负坐标.

我已经计算了手动计算翻译矩阵的点,而不是通过使用任何opencv:s函数来计算,因为棋盘函数未能检测到正确的点.

我想这可以通过对转换矩阵进行其他更改来解决.但那怎么办?另外,有没有办法确保变换后的图像沿x轴居中,然后将y轴调整到所需位置?

现在完成工作的代码段:

cv::Mat image; // image is loaded with the original image

cv::Mat warpPers; // The container for the resulting image
cv::Mat H;

std::vector<cv::Point2f> src;
std::vector<cv::Point2f> dst;

// In reality several more points.
src.push_back(cv::Point2f(264,301));
src.push_back(cv::Point2f(434,301));
src.push_back(cv::Point2f(243,356));
src.push_back(cv::Point2f(476,356));

dst.push_back(cv::Point2f(243,123));
dst.push_back(cv::Point2f(476,123));
dst.push_back(cv::Point2f(243,356));
dst.push_back(cv::Point2f(476,356));

H = cv::findHomography(src,dst,CV_RANSAC);

cv::warpPerspective(image,newPers,H,cv::Size(3000,3000),cv::INTER_NEAREST | CV_WARP_FILL_OUTLIERS
);

cv::namedWindow("Warped persp",cv::WINDOW_AUTOSIZE );
cv::imshow( "Warped persp",newPers);

解决方法

Opencv提供了非常方便的方式来进行转换.你唯一要做的就是通过findHomography来处理单应性返回.
实际上,您提供的图像中的某些点可能位于x轴或y轴的负部分.
所以你必须在扭曲图像之前做一些检查.

步骤1:使用findHomography找到单应性H.
你会得到一个经典的单应性结构

H = [ h00,h01,h02;
      h10,h11,h12;
      h20,h21,1];

第2步:在变形后搜索图像角落的位置

那么让我来定义角落的顺序:

(0,0) ________ (0,w)
     |        |
     |________|
(h,0)          (h,w)

要做到这一点,只需创建一个这样的矩阵:

P = [0,w,0;
     0,h,h;
     1,1,1]

使用H制作产品并获得扭曲坐标:

P' = H * P

步骤3:使用这些新的4点检查x和y的最小值,并获得扭曲图像的大小
之后,您已经完成了产品,您会收到类似的东西:

P' = [s1*x1,s2*x2,s3*x3,s4*x4;
      s1*y1,s2*y2,s3*y3,s4*y4;
      s1,s2,s3,s4]

因此,要获得新的有效坐标,只需将第1行和第2行除以第3行

之后检查第一行上列的最小值,以及第二行上行的最小值(使用cvReduce)

找到包含图像的边界框(即warpPerspective函数的dst矩阵的维度),用cvReduce查找每行的最大值

让minx成为第一行(即列)的最小值,maxx(1行的最大值)
miny和maxy为第二排.

所以扭曲图像的大小应该是cvSize(maxx-minx,maxy-miny)

步骤4:对单应性添加校正
检查minx和/或miny是否为负,如果minx < 0然后将-minx添加到h02并且如果miny< 0,然后将-miny添加到h12 所以H应该是:

H = [ h00,h02-minx; //if minx <0
      h10,h12-miny; //if miny <0
      h20,1];

第5步:扭曲图像

CSS sprite图像背景 – 重复它的一部分

CSS sprite图像背景 – 重复它的一部分

我可以在背景中重复一个图像的一部分(它在CSS sprite图像中)吗?

例如:

background-position : -13px top ;
background-repeat : repeat-y ;

因为我得到了整个精灵图像重复…

解决方法

如果将您的图像并排放置在一个非常宽的精灵中,您将可以使用repeat-y.如果您需要使用repeat-x,您可以将图像放在精灵之上.

css – ie11翻译缩放模糊图像

css – ie11翻译缩放模糊图像

我正在尝试创建一个气球飞行的动画.除IE11外,所有现代浏览器都有.

我正在使用translateX和translateY没有任何问题,但缩放导致图像变得模糊.

@media (min-width: 1100px) {
	.balloon-outer,.balloon-inner,.balloon {
		height: 100%;
		position: absolute;
		width: 100%;
		bottom: 0;
		right: 0;
		animation-duration: 60s;
		animation-delay: 0;
		animation-iteration-count: infinite;
		animation-direction: normal;
		will-change: transform;
		pointer-events: none;
	}
	.balloon-outer {overflow-y: hidden;
		transform-origin: 50% 50%;
		animation-name: travel-x;
		animation-timing-function: ease-in;
		transform: translateX(-20%);
	}
	.balloon {
		transform-origin: 50% 50%;
		animation-name: travel-y;
		animation-timing-function: ease-out;
		transform: translateY(90%);
	}
	.balloon-inner {background:url("https://www.inty.com/wp-content/uploads/balloon.png") no-repeat scroll 100% 100% / auto 40%;
		transform-origin: 100% 100%;
		animation-name: scale;
		animation-timing-function: linear;
		transform: scale(3);
	}
}

	@keyframes scale { 
		0% {transform: scale(3);}
		80% {transform: scale(0);}
		100% {transform: scale(0);}
	}
	@keyframes travel-x { 
		0% {transform: translateX(-10%);}
		80% {transform:translateX(-45%);}
		100% {transform:translateX(-45%);}
	}
	@keyframes travel-y { 
		0% {transform: translateY(120%);}
		80% {transform:translateY(-70%);}
		100% {transform:translateY(-70%);}
	}
<div><div><div></div></div></div>

http://codepen.io/rachelreveley/pen/xdLGEO

我尝试过这个技巧,我曾在几个地方看过,但没有区别.

-webkit-backface-visibility: hidden; 
-ms-transform: translateZ(0); /* IE 9 */
-webkit-transform: translateZ(0); /* Chrome,Safari,Opera */
transform: translateZ(0);

解决方法

尝试将所有translateX和translateY更改为translate3d,如:

@keyframes travel-x { 
    0% {transform: translate3d(-10%,0);}
    80% {transform:translate3d(-45%,0);}
    100% {transform:translate3d(-45%,0);}
}
@keyframes travel-y { 
    0% {transform: translate3d(0,120%,0);}
    80% {transform:translate3d(0,-70%,0);}
    100% {transform:translate3d(0,0);}
}

在您的示例中使用翻译的任何地方都这样做. translate3d启用硬件加速,这将有助于动画.
你可以看到this post获取更多信息.

delphi – 如何绘制图像的一部分?

delphi – 如何绘制图像的一部分?

我有一个普通的Bitmap加载PNG Image.以下代码显示整个图像;但我要找的是像下面的示例一样显示.我基本上想要减少它将被绘制的虚拟“位置”.请注意,我不能仅仅因为有人问我可以枚举的原因来调整PaintBox的大小.我想我必须使用Rects和/或一些复制功能,但我自己也搞不清楚.有谁知道怎么办?

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
    PaintBox1.Canvas.Brush.Color := clBlack;
    PaintBox1.Brush.Style := bsSolid;
    PaintBox1.Canvas.FillRect(GameWindow.Screen.ClientRect);
    PaintBox1.Canvas.Draw(0,FBitmap,FOpacity);
end;

解决方法

一种方法是修改paintBox画布的剪裁区域:

...
IntersectClipRect(PaintBox1.Canvas.Handle,20,PaintBox1.Width - 20,PaintBox1.Height - 20);
PaintBox1.Canvas.Draw(0,FOpacity);

当然,我确定你知道你的Canvas.Draw调用中的0,0是坐标.你可以画到你喜欢的地方:

...
FBitmap.Canvas.copyRect(Rect(0,80,80),FBitmap.Canvas,Rect(20,100,100));
FBitmap.SetSize(80,80);
PaintBox1.Canvas.Draw(20,FOpacity);

如果您不想剪切绘图框的区域,并且不想修改源位图(FBitmap),并且不想对其进行临时复制,则可以直接调用AlphaBlend而不是通过Canvas.画:

var
  BlendFn: TBlendFunction;
begin
  BlendFn.BlendOp := AC_SRC_OVER;
  BlendFn.BlendFlags := 0;
  BlendFn.sourceConstantAlpha := FOpacity;
  BlendFn.AlphaFormat := AC_SRC_ALPHA;

  winapi.windows.AlphaBlend(PaintBox1.Canvas.Handle,PaintBox1.Height - 20,FBitmap.Canvas.Handle,BlendFn);

今天关于使用CSS模糊图像的一部分使用css模糊图像的一部分是的讲解已经结束,谢谢您的阅读,如果想了解更多关于c – cv :: warpPerspective仅显示扭曲图像的一部分、CSS sprite图像背景 – 重复它的一部分、css – ie11翻译缩放模糊图像、delphi – 如何绘制图像的一部分?的相关知识,请在本站搜索。

本文标签: