我有以下代码,它可以完成我想要绘制一个上面有一些棋子的棋盘的(第一部分)。
Image pieceImage = getImage(currentPiece);
int pieceHeight = pieceImage.getHeight(null);
double scale = (double)side/(double)pieceHeight;
AffineTransform transform = new AffineTransform();
transform.setToTranslation(xPos, yPos);
transform.scale(scale, scale);
realGraphics.drawImage(pieceImage, transform, this);
Run Code Online (Sandbox Code Playgroud)
也就是说,它获取棋子的图像和图像的高度,将该图像的绘图转换为棋子所在的正方形,并将图像缩放到正方形的大小。
假设我想将黑色块旋转 180 度。我希望在某个地方有类似的东西:
transform.rotate(Math.toRadians(180) /* ?, ? */);
Run Code Online (Sandbox Code Playgroud)
但我不知道要输入什么作为 X 和 Y。如果我什么都不输入,图像会很好地围绕棋盘方格的 0,0 点旋转,将棋子倒置在方格的东北方。应该是这样。我猜测过 x,y 的各种其他组合,但还没有运气。
我已经在使用翻译将片段放在正确的正方形中,旋转变换需要另一个 x,y 来围绕它旋转事物,但我不知道如何告诉变换将片段围绕一个 x,y 旋转并写入图像到不同的 x,y。有人可以帮助我设置旋转参数,或者向我指出一些可以解释这些东西如何工作的东西吗?我发现了一些无法解释它们如何工作的例子,到目前为止我还没有弄清楚如何根据我的情况改变它们......
主要编辑:添加工作代码。抱歉,我不知道如何发布图片,请替换为您自己的图片。
当我运行以下命令时,我得到一个 2x2 的棋盘,左上角有一个车,右下角有一个马。
如果我进入 SmallChessboardComponent 并从第一个旋转变换语句中去掉注释分隔符,我会将车颠倒在原来的位置,并且马不会出现。如果我将注释分隔符从第二个转换语句中删除,则任何一个片段都不会出现。
我正在寻找一种方法,将这些碎片翻转到它们无论如何都会出现的正方形上。我想把每一块都画到板上;我不想要翻转棋盘的代码。
主要程序:
package main;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import directredraw.SmallChessboardComponent;
public class SmallChessboardMain
{
private static void dbg (String message) { System.out.println(message); } …Run Code Online (Sandbox Code Playgroud) 我想在我的网站上放置旋转徽标.我的意思是它应该不断旋转.我试过用jquery这样做.请看看,并建议我在哪里出错.为什么这段代码不起作用.请帮我
var rotation = function (){
$("#img").rotate({
angle:0,
animateTo:360,
callback: rotation,
easing: function (x,t,b,c,d){ // t: current time, b: begInnIng value, c: change In value, d: duration
return c*(t/d)+b;
}
});
}
rotation();
Run Code Online (Sandbox Code Playgroud)
我在我的html中使用过这段代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="jquery-1.4.4.js"></script>
<script type="text/javascript" src="jquery.easing.1.3.js"></script>
<script type="text/javascript">
var rotation = function (){
$("#img").rotate({
angle:0,
animateTo:360,
callback: rotation,
easing: function (x,t,b,c,d){ // t: current time, b: begInnIng value, c: change …Run Code Online (Sandbox Code Playgroud) 我试图用插值旋转图像,但对于大图像来说它实时太慢了.
代码类似于:
for(int y=0;y<dst_h;++y)
{
for(int x=0;x<dst_w;++x)
{
//do inverse transform
fPoint pt(Transform(Point(x, y)));
//in coor of src
int x1= (int)floor(pt.x);
int y1= (int)floor(pt.y);
int x2= x1+1;
int y2= y1+1;
if((x1>=0&&x1<src_w&&y1>=0&&y1<src_h)&&(x2>=0&&x2<src_w&&y2>=0&&y2<src_h))
{
Mask[y][x]= 1; //show pixel
float dx1= pt.x-x1;
float dx2= 1-dx1;
float dy1= pt.y-y1;
float dy2= 1-dy1;
//bilinear
pd[x].blue= (dy2*(ps[y1*src_w+x1].blue*dx2+ps[y1*src_w+x2].blue*dx1)+
dy1*(ps[y2*src_w+x1].blue*dx2+ps[y2*src_w+x2].blue*dx1));
pd[x].green= (dy2*(ps[y1*src_w+x1].green*dx2+ps[y1*src_w+x2].green*dx1)+
dy1*(ps[y2*src_w+x1].green*dx2+ps[y2*src_w+x2].green*dx1));
pd[x].red= (dy2*(ps[y1*src_w+x1].red*dx2+ps[y1*src_w+x2].red*dx1)+
dy1*(ps[y2*src_w+x1].red*dx2+ps[y2*src_w+x2].red*dx1));
//nearest neighbour
//pd[x]= ps[((int)pt.y)*src_w+(int)pt.x];
}
else
Mask[y][x]= 0; //transparent pixel
}
pd+= dst_w;
}
Run Code Online (Sandbox Code Playgroud)
我如何加速这段代码,我尝试并行化这段代码,但由于内存访问模式(?)似乎没有加速.
c++ performance interpolation image-processing image-rotation
默认情况下,MATLAB 函数 imrotate 旋转图像,旋转部分填充黑色。看到这个, http://in.mathworks.com/help/examples/images_product/RotationFitgeotransExample_02.png
我们也可以使用白色背景旋转图像 。
问题是,我们可以旋转填充原始图像背景的图像(使用或不使用 imrotate)吗?
特定于我的问题:旋转角度非常小的彩色图像(<=5 度)
我正在尝试编写一个类来在 x 和 y 方向上缝合雕刻图像。x 方向正在工作,为了减少 y 方向,我想简单地将图像旋转 90° 并在已经重新缩放的图像上运行相同的代码(仅在 x 方向上),然后将其旋转回其初始状态。
我找到了一些东西AffineTransform并尝试了它。它实际上产生了一个旋转的图像,但弄乱了颜色,我不知道为什么。
这是所有的代码:
import java.awt.image.BufferedImage;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.io.File;
import java.io.IOException;
import javafx.scene.paint.Color;
import javax.imageio.ImageIO;
public class example {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
// TODO code application logic here
BufferedImage imgIn = ImageIO.read(new File("landscape.jpg"));
BufferedImage imgIn2 = imgIn;
AffineTransform tx = new AffineTransform();
tx.rotate(Math.PI/2, imgIn2.getWidth() / 2, imgIn2.getHeight() / 2);//(radian,arbit_X,arbit_Y)
AffineTransformOp op …Run Code Online (Sandbox Code Playgroud) java bufferedimage seam-carving image-rotation affinetransform
我有这些 IC 的图像,我必须在上面进行一些图像处理。我能够找到这些图像的轮廓。但有时这些 IC 是随机旋转的。如何将它们拉直为适当的规则矩形?
这些是我的一些轮廓检测图像:
很高兴,如果有人能让我开始学习如何将这些图像旋转回直角矩形/正方形。提前致谢 :)
假设我有一个尺寸为 (20 x 100) 的 QPixmap。如何创建此 QPixmap 的副本,该副本已旋转了特定量并具有新尺寸以分配旋转像素图的新尺寸?
我找到了多个关于如何使用 QPainter 和 QTransform 进行旋转的示例,但似乎没有一个提供适当的方式来防止 QPixmap 被切断。
到目前为止我发现的最好的例子是:
// original = Original QPixmap
QSize size = original.size();
QPixmap newPixmap(size);
newPixmap.fill(QColor::fromRgb(0, 0, 0, 0));
QPainter p(&newPixmap);
p.translate(size.height() / 2, size.height() / 2);
p.rotate(35); // Any rotation, for this example 35 degrees
p.translate(size.height() / -2, size.height() / -2);
p.drawPixmap(0, 0, original);
p.end();
Run Code Online (Sandbox Code Playgroud)
这将旋转 QPixmap,并将其放置在相同尺寸的新 QPixmap 上。但是,我不知道如何修改它以使用新维度。
我什至尝试过简单地修改新像素图的初始大小,但这只会导致图像偏离中心(并且由于某种原因仍然被切断?)
任何支持将不胜感激!
我有一个UIImageView有一个箭头的图像.当用户点击UIView时,此箭头应指向水龙头维持其位置的方向,它应该只是改变变换.我已经实现了以下代码.但它没有按预期工作.我添加了截图.在此屏幕截图中,当我触摸左上角时,箭头方向应该如图所示.但是没有发生这种情况.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch=[[event allTouches]anyObject];
touchedPoint= [touch locationInView:touch.view];
imageViews.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(rangle11));
previousTouchedPoint = touchedPoint ;
}
- (CGFloat) pointPairToBearingDegrees:(CGPoint)startingPoint secondPoint:(CGPoint) endingPoint
{
CGPoint originPoint = CGPointMake(endingPoint.x - startingPoint.x, endingPoint.y - startingPoint.y); // get origin point to origin by subtracting end from start
float bearingRadians = atan2f(originPoint.y, originPoint.x); // get bearing in radians
float bearingDegrees = bearingRadians * (180.0 / M_PI); // convert to degrees
bearingDegrees = (bearingDegrees > 0.0 ? bearingDegrees : (360.0 + bearingDegrees)); // correct …Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法可以在Mac OSX应用程序中旋转NSImage?或者只是使用Swift设置从纵向到横向的方向?
我正在玩CATransform3DMakeAffineTransform,但我无法让它工作.
CATransform3DMakeAffineTransform(CGAffineTransformMakeRotation(CGFloat(M_PI) * 90/180))
Run Code Online (Sandbox Code Playgroud)
这是我第一次使用转换.所以请耐心等待我:)也许我正在采取错误的方法......
有人能帮帮我吗?
谢谢!
我是 Flutter 的新手,我想知道如何在 Flutter 中更改背景图像的位置。我想在页面的一角显示背景图像,并由于 ovelflow 将其位置更改为图像的隐藏部分。
作为实现这一目标的前端开发人员,我考虑将图像的位置更改为绝对值并将底部和右侧设置为负值,但在 Flutter 中以不同的方式执行这些操作。
我如何在 Flutter 中实现这一点?
class _WaterIntakeState extends State<WaterIntake> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Stack(
children: <Widget>[
Container(
color: Colors.white,
),
Container(
decoration: BoxDecoration(
image: DecorationImage(
colorFilter: ColorFilter.mode(Colors.white.withOpacity(0.5), BlendMode.dstATop),
image: AssetImage("assets/images/drink-water.png"),
fit: BoxFit.fitWidth,
)),
),
Scaffold(
backgroundColor: Colors.transparent,
appBar: AppBar(
title: Text('Water Intake'),
),
body: Container(
// child: const ButtonsWidget(),
),
),
],
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
当前状态 :
我想要的是 :
image-rotation ×13
c++ ×2
java ×2
rotation ×2
.net ×1
awt ×1
c# ×1
cocoa ×1
cocoa-touch ×1
css ×1
flutter ×1
graphics ×1
ios ×1
javascript ×1
jquery ×1
matlab ×1
nivo-slider ×1
nsimage ×1
opencv ×1
performance ×1
python-2.7 ×1
qpainter ×1
qpixmap ×1
qt ×1
seam-carving ×1
slider ×1
swift ×1
transform ×1
uiimageview ×1
vba ×1
winapi ×1
winforms ×1