BufferImage的使用之如何放缩和截取图片的一部分

BufferedImage src  //BufferedImage 类的图片资源

int width = src.getWidth(); // 得到源图宽
int height = src.getHeight(); // 得到源图长

int fontsize = (18 * src.getWidth() / 757);//根据图片的宽度设置适合的字体大小

BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//定义一个和图片资源一样大小的图片

Graphics g = tag.getGraphics();//将新定义的图片设置为画布

Graphics2D g2d = (Graphics2D) g;//强制转换画板为2D的画布

g2d.setBackground(Color.WHITE);//设置画布的背景颜色为白色
g2d.fillRect(0, 0, width, height);//获得画布的制定的区域,宽度为0-width,高度为0-height
g2d.setColor(Color.BLACK);//设置画布的颜色为黑色

g2d.setFont(new Font("宋体", 0, fontsize));//设置在画布上写字的字体和大小

String[] strs = re.split("\n");//re 为将要写到画布上的文字的字符串

g2d.drawImage(src, -310,0,width*5/4,height,null);//将源图片绘画到画布上面,图片src的宽度拉宽为原来的5/4,高度不做拉伸   src.getScaledInstance(width*4/3, height*4/3,Image.SCALE_DEFAULT);//这个方法应该是获得源图片的4/3宽、4/3高的区域,但是不做图片的拉伸处理

for (int i = 0; i < strs.length; i++) {
g2d.drawString(strs[i], fontsize, (fontsize + 5) * (i + 1));//将指定的字符数组strs 的文字写在画布X方向fontsize、Y方向(fontsize + 5) * (i + 1)的位置
}

g2d.dispose();
ImageIO.write(tag, "JPEG", new File(result));// 输出到最终的画布画上图像之后的文件的文件流   result为文件坐在路径

时间: 2024-10-22 13:47:17

BufferImage的使用之如何放缩和截取图片的一部分的相关文章

node上截取图片工具 images(node-images)

我们经常会遇到服务器上传的图片进行裁剪或者增加logo等等一些操作,在node平台上该如何实现呢? 看到大家都在使用"gm"这个工具,功能很强大,但是在Windows平台上简直就是各种坑啊,我整了一下午虽然解决了一部分问题,但还是选择了另外一款不错的,而且轻量级跨平台比较好的截图模块——images 安装方式   npm install images github地址为https://github.com/zhangyuanwei/node-images 正如作者所描述的,轻量级.跨平

IOS 截取图片 部分 并生成新图片

/** * 从图片中按指定的位置大小截取图片的一部分 * * @param image UIImage image 原始的图片 * @param rect CGRect rect 要截取的区域 * * @return UIImage */ + (UIImage *)ct_imageFromImage:(UIImage *)image inRect:(CGRect)rect{ //把像 素rect 转化为 点rect(如无转化则按原图像素取部分图片) CGFloat scale = [UIScre

拍照+相册+截取图片

一.拍照+截取 拍照: mStorageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);//获取存储器的专门放图片的区域 uri = Uri.fromFile(new File(mStorageDir.getPath()+System.currentTimeMillis()+".png")); //在该区域创建文件,并转换为uri格式 Intent intent = new

关于UIImageView的显示问题——居中显示或者截取图片的中间部分显示

我们都知道在ios中,每一个UIImageView都有他的frame大小,但是如果图片的大小和这个frame的大小不符合的时候会怎么样呢?在默认情况,图片会被压缩或者拉伸以填满整个区域. 通过查看UIView的属性可以知道,view的contentMode属性可以用来控制图片的显示情况.下面的设置可以让图片进行居中显示. 1 imageView.contentMode =  UIViewContentModeCenter; 这个居中是包括了,横向和纵向都是居中.图片不会拉伸或者压缩,就是按照im

[ATL/WTL]_[CBitmap复制图片-截取图片-平铺图片]

场景: 1.当你需要截取图片部分区域作为某个控件的背景. 2.需要平铺图片到一个大区域让他自动放大时. 3.或者需要合并图片时. 代码: CDC sdc; CDC ddc; sdc.CreateCompatibleDC(NULL); ddc.CreateCompatibleDC(NULL); CBitmap destBmp; destBmp.CreateCompatibleBitmap(CClientDC(NULL),width,height); sdc.SelectBitmap(m_Bitma

[ATL/WTL]_[0基础]_[CBitmap复制图片-截取图片-平铺图片]

场景: 1.当你须要截取图片部分区域作为某个控件的背景. 2.须要平铺图片到一个大区域让他自己主动放大时. 3.或者须要合并图片时. 代码: CDC sdc; CDC ddc; sdc.CreateCompatibleDC(NULL); ddc.CreateCompatibleDC(NULL); CBitmap destBmp; destBmp.CreateCompatibleBitmap(CClientDC(NULL),width,height); sdc.SelectBitmap(m_Bit

根据size截取图片中间矩形区域的图片 这里的size是正方形

#pragma mark 根据size截取图片中间矩形区域的图片 这里的size是正方形 -(UIImage *)cutCenterImage:(UIImage *)image size:(CGSize)size{ CGSize imageSize = image.size; CGRect rect; //根据图片的大小计算出图片中间矩形区域的位置与大小 if (imageSize.width > imageSize.height) { float leftMargin = (imageSize

iOS 根据UIImage 修改UIImageView Frame (包括截取图片中间部分)

iOS UIImageView 根据需求调整frame 1.图片的宽和高不相等,截取图片的中间部分,截取的部分Size明确 2.图片的宽度要等于其父视图的类的宽度,然后根据宽度计算高度,保证 图片不变形,显示正常 3.图片的宽度或高度大于其父视图的类的宽的或高度,如果是宽度的问题, 就以其父视图的宽度为准,确定图片的显示宽度:如果是高度的问题,就以 其父视图的高度为准,确定图片的显示高度. 以上三种情况,具体示例依次如下: 第一种情况,调用方法: - (void)imageLoadedFinis

机器学习进阶-图片基本处理-ROI区域 1.img[0:200, 0:200]截取图片 2.cv2.split(对图片的颜色通道进行拆分) 3. cv2.merge(将颜色通道进行合并) 4 cur_img[:, :, 0] = 0 使得b通道的颜色数值为0

1. 截取图片的部分区域img[0:200, 0:200], 读入的图片是ndarray格式 2. b, g, r = cv2.split(img)  # 对图片的颜色通道进行拆分 3.img = cv2.merge((b, g, r))  #对图片的颜色通道进行合并 4. 对其他通道置零,只显示单个通道 cur_img[:, :, 0] = 0, cur_img[:, :, 1] = 0 代码: 只显示部分区域 import cv2 # 定义显示函数 def cv_show(name, img