Java语言图像处理应用开发

Java 专栏收录该内容
¥59.90 ¥99.00
234篇文章

图像处理是计算机科学领域中非常重要和广泛应用的技术之一。Java语言提供了强大的图像处理库和工具,使开发人员能够轻松地创建各种图像处理应用程序。本文将介绍Java语言中图像处理应用程序的开发,并提供相应的源代码示例。

一、图像处理基础知识

在开始图像处理应用程序的开发之前,让我们先了解一些基本的图像处理知识。

  1. 图像表示

计算机中的图像通常由像素组成,每个像素代表图像中的一个点。像素可以包含不同的信息,如灰度值或颜色值。图像可以是灰度图像(每个像素只有一个灰度值)或彩色图像(每个像素有多个颜色值)。

  1. 图像处理操作

图像处理涉及对图像执行各种操作,包括调整图像的大小、改变图像的亮度和对比度、应用滤波器等。这些操作可以改善图像的质量、增强图像的特定特征或提取有用的信息。

二、Java图像处理库

Java提供了许多用于图像处理的库和工具。其中最常用的是Java Advanced Imaging(JAI)和JavaFX。

  1. Java Advanced Imaging(JAI)

Java Advanced Imaging(JAI)是一个强大的图像处理库,提供了丰富的图像处理功能和算法。它支持图像的读取、写入、缩放、旋转、滤波等操作。JAI还提供了图像处理操作的并行执行和高性能处理能力。

  1. JavaFX

JavaFX是Java平台上的一个现代化的图形界面工具包,它也提供了一些图像处理功能。JavaFX中的ImageView类可以用于显示图像,并提供

Java调用OpenCv库处理图像 我们使用需要找到两个依赖文件 jar 和 dllbuild为构建后的文件包含了 java python这里要结合java使用,所以选择Java目录 找到所需的jarjava目录下 x64 和 x86 代表不同系统 这里选择x64 找到所需的dll。 阅读详情

相关推荐

基于MATLAB图像处理

设计题目 图片叠加。设计要求 将一幅礼花图片和一幅夜景图片做叠加运算,使达到烟花夜景的美图效果。设计方案3.1、设计思路 利用matlab强大的图像处理功能,通过编写程序,实现对两幅图片的像素进行线性运算,利用灰度变换的算法使图片达到预期的效果。3.2、软件介绍 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathwo...

sunny_chenxi的博客 2537

编程图像处理(1):Python、MATLAB、Java、C/C++

一个基于SciPy的图像处理库,提供了许多高级算法和功能。内置强大的图像处理工具箱,可以方便地进行各种图像处理操作。:一个功能强大的计算机视觉库,支持多种图像处理功能。:一个简单易用的图像处理库,适合基本的图像操作。使用OpenCV库,可以实现高效的图像处理应用。:也可以在Java中使用OpenCV库。:提供图像处理的基本功能。

Kemo_的博客 515

Java开源图像处理框架Marvin介绍

Java对图像的处理框架比较少,目前比较流行的有Jmagick以及Marvin,但Jmagick只能处理图像(上篇Java清除图片中的恶意信息(利用Jmagick)中对Jmagick已做过简略介绍),而Marvin不但可以处理图像,而且可以集成各种插件,操作视频,摄像头来达到各种效果。Marvin 是一个Java开发的可扩展的图像处理框架,该框架主要提供以下几方面的功能:基本图像操作;从视频中捕获帧;多线程的图像处理;通过GUI界面集成插件;插件性能分析;通过插件进行功能扩展。授权协议: GPL开发语言:

shixing_11的专栏 9334

【图像处理】数据集合集!

文字的添加,大小缩放,字体更换,颜色更换,删除;该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。图像处理包括:灰度化、均值滤波、边缘检测、伽马变换、旋转镜像、亮度调节、二值化、对比度,饱和度调节、色彩调节、图片保存、水印等。Morn是一个C语言的基础工具和基础算法库,包括数据结构、图像处理、音频处理、机器学习等,具有简单、通用、高效的特点。

Kyzy_1919的博客 1187

6本值得收藏的数字图像处理书籍!

在这个看脸的时代,颜值就是一切。怎样可以成为控制颜值的“黑魔法师”?相信,阅读以下这些经典的图像处理书籍能够助你一臂之力。赶紧紧随大圣众包威客平台的脚步吧! 《数字图像处理基础》   随着台式计算机的处理能力日益增强,各种图像拍摄的设备(例如平板电脑、手机摄像头、数码相机、扫描仪等)的普及,以及互联网的加持,使得数字图像处理变得与文字处理一样普及。本书就数字

dashenghuahua的博客 3万+

4.2 JAI

4.2 JAI Java Advanced Imaging(JAI)是由Sun Microsystems开发建立的图像处理库,而JAI Image I/O Tools为标准Java Image I/O Framework提供了读写插件。 内存和切片 在处理大图像时,一般会采用切片处理的方法,即一次只处理该图像的一个子集而不将所有内容加载到内存中,这样做可以避免内存不足的问题。由于处理每一个切片的时候往往会和周围的切片一起计算,因此切片的同时需要伴随着缓存机制。但是要想完全理解这部分内容需要对JAI有一个

q237895772的博客 659

使用Java编程实现的优秀图形处理滤镜

在上面的代码中,我们首先使用JAI库加载图像,然后创建一个3x3的模糊滤镜。模糊滤镜的核心是一个包含9个元素的浮点数数组,每个元素表示滤镜的权重。在这个例子中,我们使用了一个简单的平均模糊滤镜,每个像素的值都是周围9个像素的平均值。在图形处理领域,滤镜是一种常用的技术,可以改变图像的外观和特性。这个示例只是一个简单的图形处理滤镜的实现,你可以根据自己的需求和创意创建更复杂的滤镜。使用Java的图像处理库,你可以轻松地实现各种滤镜效果,为你的图像处理应用增添更多创意和魅力。替换为你自己的图像文件路径。

2301_79326891的博客 196

基于Java的图像处理技术研究

图像处理是计算机视觉领域的核心技术之一,而Java作为一种广泛应用的编程语言,通过丰富的图像处理库(如、OpenCV、Apache Commons Imaging等)提供了强大的图像处理能力。在Java中,开发者可以进行从图像读取、处理到保存的一系列操作,应用于多个领域如自动化检测、医学影像分析和计算机视觉等。本文介绍了几种常见的图像处理技术,包括图像灰度化、边缘检测、图像滤波、颜色空间转换和形态学操作,并提供了相应的代码示例。

shrgegrb的博客 1089

基于Java的图像处理:功能丰富、易用性高

作者:禅与计算机程序设计艺术 随着互联网的飞速发展,各种形式的媒体越来越多地涌现出来,形成了海量的、精准的、有价值的信息。这些信息通常都需要经过计算机图像处理技术进行过滤和分析后才能得到有用的信息。因此,如何快速、精确地对图片进行分类、检测、跟踪、识别等复杂的图像处理任务,成为当今技术领域的热点话题。由于Java作为目前最流行的面向对象编

AI天才研究院 3239

使用Java语言实现图像处理算法

本文介绍了Java语言中的图像处理算法,并提供了相应的源代码。通过使用这些算法,我们可以对图像进行灰度化、边缘检测和图像模糊等处理,进而实现更多有趣的图像处理效果。图像处理是计算机视觉和计算机图形学领域中一项重要的技术。借助于Java编程语言的强大功能,我们可以实现各种图像处理算法。本文将介绍几种常见的图像处理算法,并提供相应的Java源代码。边缘检测是一种常见的图像处理技术,用于检测图像中的边缘或轮廓。图像模糊是一种常用的图像处理技术,可以使图像变得更加柔和和模糊。使用Java语言实现图像处理算法。

TechO_O的博客 291

从 Java 到 Go:使用 Go 语言开发图像处理服务

本教程向您展示了如何使用 Go 语言开发一个简单的图像处理服务,包括图像压缩、裁剪和应用滤镜。我们从 Java 的角度出发,逐步向您展示了如何用 Go 语言实现类似的功能。希望本教程能够帮助您更顺利地从 Java 过渡到 Go 语言。通过对比 Java 和 Go 代码,您可以更好地了解二者之间的相似之处和差异。我们希望本教程能够帮助您更顺利地从 Java 过渡到 Go 语言。如果您对本教程有任何疑问或建议,请随时向我们提问。

斌擎科技 185

C语言数字图像处理---入门总结篇

C语言数字图像处理---入门总结

Trent1985的专栏 6144

基于OpenCV的Java图像处理工具设计与实现

本文详细介绍了如何使用Java语言结合OpenCV库开发一个功能全面的图像处理工具。文章从环境配置开始,逐步讲解图像读取、显示、基础处理、高级算法实现以及GUI界面开发等各个方面,提供了完整的代码示例和详细的技术解析。本文旨在为Java开发者提供一个全面的OpenCV图像处理指南,帮助读者快速掌握计算机视觉开发的核心技术。关键词:Java, OpenCV, 图像处理, 计算机视觉, GUI开发。

2201_76125393的博客 115

MATLAB算法实战应用案例精讲-【图像处理】数字图像二值化(附Java、python、matlab、C++和R语言代码实现)

图像二值化( Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,首先,图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。

qq_36130719的博客 2732

udig-extras:Java Advanced Imaging (JAI) 和 JAI ImageIO 作为 OSGi 包和片段

udig-extras Travis 的当前构建状态: 该项目将 Java Advanced Imaging (JAI) 和 JAI ImageIO 构建为 OSGi 包和片段 在您可以找到有关如何构建 Eclipse 包、片段、特性和 P2 存储库的详细信息

Java Advanced Imaging API和Java Image IO Technology包 for Linux.rar

jai_imageio-1_1-lib-linux-amd64-jdk.bin jai_imageio-1_1-lib-linux-amd64-jre.bin jai_imageio-1_1-lib-linux-i586-jdk.bin jai_imageio-1_1-lib-linux-i586-jre.bin jai-1_1_3-lib-linux-amd64-jdk.bin jai-1_1_3-lib-linux-amd64-jre.bin jai-1_1_3-lib-linux-i586-jdk.bin jai-1_1_3-lib-linux-i586-jre.bin

数字化车间智能排产调度挑战赛(一)—— 数学模型

科大讯飞——数字化车间智能排产调度挑战赛。

Lyyyp的博客 5654

yersinia -G打不开图形化界面解决方案(曲线救国,实操可行)

附Kali 2021 VMware懒人版,已完成汉化,更新源,并已经安装yersinia。ping 114.114.114.114也不通,接着ifconfig发现 IP地址有的,然后手动配置了IP地址,发现还是Ping不通114.11.4.114.114,然后输入。更新源后,报错源无法解析,同时ping www.baidu.com也不通,那可能是DNS存在问题,更新一下DNS服务器。百度找了很久,有个回答比较接近,但一一尝试了几遍,还是无解,解决不了呀!•(2)Yersinia编译的时候,要选择gtk。

weilandeyongheng的专栏 4172

从内外参推导IPM变换方程及代码实现(生成AVM环视拼接图)

最近想实现AVM拼接,看了不少博客和论文,不过比较愚钝,一直没能很好理解原理,尤其是怎么在实现时把下文中Z1和Z2消除的,所以严谨的推导了一下对应的公式,如有不对,水平有限,烦请指出~IPM变换(逆透视变换),顾名思义,即将正常透视效应消除的变换,变换结果为鸟瞰图BEV(俯视图);AVM环视拼接一般是将车身前后左右的四个鱼眼相机拼接成环视图(也是俯视),其使用的单应矩阵将四个相机转到同一个俯视坐标系。

mxdsdo09的博客 4175

深度学习环境配置系列文章(二):Anaconda配置Python和PyTorch

Anaconda有着强大的包管理和环境管理的功能,使用后可以方便地使用和切换不同版本的Python和PyTorch等科学计算库,本文将介绍其下载安装和使用方法。第二章和第三章内容分别提供Window系统和Linux系统安装Anaconda的方式,读者可根据自己电脑系统选择其一安装即可。

极光喵的博客 4177

保姆级教程:5分钟搞定微信小程序live-player组件接入监控视频流

本文提供了一份详细的微信小程序接入实时监控视频流的实战指南。文章对比了live-player与video组件的核心差异,重点解析了如何申请并开通live-player组件的严格权限,并提供了播放RTMP流(低延迟)的完整配置、状态监听与错误处理代码。同时,也介绍了使用video组件播放HLS流的备选方案,帮助开发者根据项目需求快速选择并实现稳定可靠的监控视频播放功能。

open4的博客 298

python实现Markowitz模型 (附完整源码)

python实现Markowitz模型 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 407

uniapp - HBuilder提示adb: failed to install X Failure [INSTALL_ARSE_FAILED_NOT_APK:X(安装HBuilder调试基座失败)

安装HBuilderX调试基座失败,uniapp APP运行到手机adb: failed to install,Uniapp提示adb,uniapp ios 真机调试报错 uniapp安卓调试,Uniapp安装不了基座,手动安装基座,正在安装手机端HBuilder调试基座,点击运行到手机报错信息:基座无法正常安装,Uniapp-安装HBuilder调试基座失败解决方案,解决 HBuilderX 安卓基座安装失败的问题,显示adb报错,UniApp苹果真机运行调试(自定义基座,版本更新后/没有基座打开失败)如

🏆 前端领域优质创作者 8064

RobotFramework二次开发——实时日志

背景基于RobotFramework的二次开发,少不了要打印实时日志出来,比如广泛应用的工具ride中,在执行用例时会把执行过程中的log全部打印出来,如果二次开发的时候,执行用例只能静默等待执行完毕,那只能算是一个半成品。结果在最后,不想看过程的可以直接跳到最后思路RobotFramework的日志有好几种,一个是执行后的log文件,这个文件可以作为数据留存,但是没办法实时获取,因为文件是在执行完

点点寒彬的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: Java中创建数组的方法
下一篇: Java中this关键字的使用及对象构造初始化的方法
普通网友
博客等级 码龄3年 62粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值