#pixelmapping
Explore tagged Tumblr posts
Text
HarmonyOS NEXT Practical: Network Image Loading and Failure
Objective: When loading network images, display the loading image. After loading is complete, display the network image. If loading fails, display the occupied map of the failed loading.
Prerequisite: ohos.permission.INTERNET Permission application required
Implementation idea:
Display images through Image.
Load the image through the alt setting of Image.
Obtain the status of loading failure through the ONError event of Image.
Display the corresponding occupation map based on the loading status.
Interface Description [code] alt(value: string | Resource | PixelMap) [/code] Set the placeholder map displayed when loading images. Setting this property does not take effect when the parameter type of the component is AnimatedDrawableDescriptor. Description: The placeholder map displayed during loading supports local images (PNG, JPG, BMP, SVG, GIF, and Heif types), PixelMap type images, and does not support network images. (Default value: null)
onComplete event [code] onComplete(callback: (event?: { width: number, height: number, componentWidth: number, componentHeight: number, loadingStatus: number,contentWidth: number, contentHeight: number, contentOffsetX: number, contentOffsetY: number }) => void) [/code] When the image data is successfully loaded and decoded, this callback is triggered, returning the size of the successfully loaded image. When the parameter type of the component is AnimatedDrawableDescriptor, this event is not triggered.
onError Event [code] onError(callback: ImageErrorCallback) [/code] This callback is triggered when the image loading is abnormal. When the parameter type of the component is AnimatedDrawableDescriptor, this event is not triggered. Explanation: A callback triggered when an image loading exception occurs. It is recommended that developers use this callback to quickly confirm the specific reason for image loading failure.
ImageErrorCallback: The callback triggered when an image loading exception occurs. When the parameter type of the component is AnimatedDrawableDescriptor, this event is not triggered.
onFinish event [code] onFinish(event: () => void) [/code] When the loaded source file is an SVG format image with a driving effect, this callback will be triggered when the SVG animation playback is completed. If the animation is an infinite loop animation, this callback will not be triggered. Only supports images in SVG format. When the parameter type of the component is AnimatedDrawableDescriptor, this event is not triggered.
aspectRatio interface [code]aspectRatio(value: number)[/code] Specify the aspect ratio of the current component, aspectRatio=width/height。 When only setting width and aspectRatio, height=width/aspectRatio。 When only setting the height and aspect ratio, width=height*aspectRatio。 When setting width, height, and aspectRatio simultaneously, height does not take effect, height=width/aspectRatio。 After setting the aspectRatio property, the width and height of the component will be limited by the size of the parent component's content area.
Practical code: [code] @Entry @Component struct ImagePlaceholderPage { imageSrc: string = 'https://c-ssl.dtstatic.com/uploads/blog/202311/27/0GSZv1oh0ePwpE.thumb.400_0.jpeg' @State loadingSuccess: boolean = true
build() { Column({ space: 10 }) { Text('图片占位符') this.buildImage(this.imageSrc) } .width('100%') .height('100%') .padding(20) }
@Builder buildImage(src: string) { Row() { if (this.loadingSuccess) { Image(src) .width('100%')// .alt($r('app.media.rays')) .onComplete(() => { //图片数据加载成功和解码成功时均触发该回调 this.loadingSuccess = true }) .onError(() => { //图片加载异常时触发该回调。 this.loadingSuccess = false }) .onFinish(() => { //当加载的源文件为带动效的svg格式图片时,svg动效播放完成时会触发这个回调。如果动效为无限循环动效,则不会触发这个回调。 }) } else { //图片加载失败的占位图 Column({ space: 10 }) { SymbolGlyph($r('sys.symbol.exclamationmark_circle')) .fontSize(30) .renderingStrategy(SymbolRenderingStrategy.SINGLE) .fontColor([Color.Gray]) Text('图片加载失败') .fontColor(Color.Gray) } } } .width('100%') .justifyContent(FlexAlign.Center) .borderRadius(6) .backgroundColor('#EEEEEE') .aspectRatio(1) .clip(true) } } [/code]
0 notes
Text
Unveiling The Past: Exploring Historic NFTs In The Digital Age
We are living in the era of Digital Currencies and Non-Fungible Tokens (NFTs). Today every possible document and artwork is available in the form of NFTs as a safe mode. These NFTs can be managed for centuries from now, and our future generations can take references from them. But the major question arises that when it all started, and which were the first Historical NFTs available to the human race online? Though it is not so easy to come to any conclusion, many NFT researchers and professionals have given their theories on it. In this informative, we will discuss those historic NFTs recorded in the past. Keep reading for more details on the topic.
Historical NFTs
These are some of the historical NFTs that are researched and found by NFT researchers;
Quantum (May 02, 2014)
Quantum was the first ever NFT minted in history during the introductory level of the Blockchain system. It was minted by Jennifer and Kevin McCoy, who were digital artists. Though, the NFT was not in trade for years until it was sold in June 2021 for 1 Million Dollars.
Eggs (July 27, 2014)
Bitcoin had a project named Namecoin in 2011. It was quite famous among people. In 2014 people decided to use profile images with their names as it could be done. And in the same year, Eggs were introduced as NFTs in the market. It was also known as PFPs and Twitter Eggs.
Spells Of Genesis (March 11, 2015)
Spells of Genesis is a gaming asset NFT of Blockchain. It was launched in 2015 and was the first-ever trading card game on the Blockchain platform. EverdreamSoft launched FDCARD in the market as one of the very first NFTs.
Linagee Name Registrar (August 08, 2015)
Mason Keresty, who is an NFT archeologist, found Linagee Name Registrar in Oct 2022 as the oldest NFT recorded on the digital ledgers so far. Though it is not the oldest one as per the records, his genuine efforts were appreciated. It is also known as Ethereum Name Services (ENS) as it was launched just after the public launch of Ethereum cryptocurrency.
SaruTobi (May 06, 2016)
It can be considered one of the oldest NFT games registered online in history. SaruTobi was launched by a youngster Christian Moss who was an iOS developer. He launched it on the Apple App Store on Dec 19, 2014. He allowed players to collect a small amount of bitcoins as rewards in the game.
Rare Pepes (September 09, 2016)
These are the first ever collectible cards made available on the Blockchain platform by Satoshi Nakamoto which invented bitcoins. This card is also known as the Nakamoto card out of 1800 different cards available online.
PixelMap (November 16, 2016)
PixelMap was launched on the Ethereum Blockchain platform by Ken Erwin in Nov 2016. It is a decentralized artwork that can be purchased by anyone, and they can change the image used on the tile. It makes the artwork incomplete forever and leaves a chance for modifications.
Crypto Punks (June 23, 2017)
Crypto Punks are avatars available in 8 bits in the form of NFTs. These avatars are available as artwork and collectibles launched by two software developers named Matt Hall & John Watkinson. These are the most famous artworks available in the digital world in history.
Conclusion
Non-Fungible Tokens have been successful in history, and these tokens will be the future to channelize the digital world and to do safe and swift online trading. Blockchain games like Etherization provide players with true ownership of their in-game assets. NFTs are the most protected and secure ways to keep your art alive for ages while keeping it accessible for all. Although, many individuals are still unaware of such artworks and mechanisms that can help you earn a far better return on investment. The list of first-ever NFTs is not limited to the above-mentioned NFTs as many of them are not revealed yet. We may get to know them in the future. If you haven't checked them out yet, try them for yourself.
For more details visit etherization.org
1 note
·
View note
Photo

Exploring endless possibilities with @dinandesign @artdigital_llc @dollarsine // #Analog #madewithnotch #grandma2 #resolume #notch #lightworker #loveroflights #pixelmapping #videofeedback #imag #moog #mmp #musicmattersproductions (at Music Matters Productions)
#analog#madewithnotch#grandma2#resolume#notch#lightworker#loveroflights#pixelmapping#videofeedback#imag#moog#mmp#musicmattersproductions
2 notes
·
View notes
Text
India's 1st Pixel Mapping Art Installation at Kyoorius Design Yatra 2009.
1 note
·
View note
Photo

Here we were also part of this 50-year-old event @fernandovillalona #pantallasled #ledscreen #pixelmapping #resolumenarena #server #grandma2 #varilite #vl10beamwash #vl3500 #wildsun (at Santo Domingo, Dominican Republic) https://www.instagram.com/p/CW1Ak2xpQQv5Z3uSujpmZPsxJiD1MEoud403sc0/?utm_medium=tumblr
#pantallasled#ledscreen#pixelmapping#resolumenarena#server#grandma2#varilite#vl10beamwash#vl3500#wildsun
0 notes
Photo

LED . interactive light sculpture #interactive #interactiveart #audiovisual #videomapping #lightart #videoart #pixelmapping #ledstrip #contemporaryart #generative #generativeart #codeart #architecturallighting #creativecoding #realtime #mediaart #newmediaart #abstractart #projectionart #lightinstallation #videoinstallation #performanceart #soundart #augmentedreality #immersiveart #installationart #projectionmapping #stagedesign #architecturalspaceintervention #mayerempl (at Munich, Germany)
#interactiveart#performanceart#audiovisual#architecturallighting#codeart#pixelmapping#realtime#generative#videoinstallation#contemporaryart#installationart#newmediaart#architecturalspaceintervention#videomapping#augmentedreality#interactive#ledstrip#projectionart#videoart#soundart#abstractart#lightinstallation#creativecoding#projectionmapping#mediaart#mayerempl#immersiveart#generativeart#lightart#stagedesign
2 notes
·
View notes
Photo

🔦 #lighting #light #lightingdesign #architecturallighting #architectural #pixelmapping #mapping #videomapping #amber #cyan #blue #color #beamz #beamzlighting #contestlighting #dtslighting (presso Uscio) https://www.instagram.com/p/CFW8UneiLbE/?igshid=adzom7khghen
#lighting#light#lightingdesign#architecturallighting#architectural#pixelmapping#mapping#videomapping#amber#cyan#blue#color#beamz#beamzlighting#contestlighting#dtslighting
0 notes
Photo

Still life - jar of tea and plants in my window No.1 #iphonography #multipleexposure #pixelmapping #chicago #tea #plants #masonjar (at Uptown) https://www.instagram.com/p/CErno4uH9SJ/?igshid=7m4b09xbr7dh
0 notes
Text
HarmonyOS NEXT Practical: Save Network Images
Objective: Display network images, download them by clicking the save button, and save them locally.
Prerequisite: ohos.permission.INTERNET Permission application required
Implementation idea:
Display images through Image.
Obtain operational permissions through SaveButton.
Download images through request.downloadFile.
Copy images locally through fileIo.
Specific implementation [code] import { http } from '@kit.NetworkKit'; import { image } from '@kit.ImageKit'; import { BusinessError, request } from '@kit.BasicServicesKit'; import { photoAccessHelper } from '@kit.MediaLibraryKit'; import { promptAction } from '@kit.ArkUI'; import { fileIo, fileIo as fs, fileUri } from '@kit.CoreFileKit'; import { common } from '@kit.AbilityKit';
@Entry @Component struct SaveImageDemoPage { imgUrl:string = 'https://pic1.zhimg.com/70/v2-88fd131a2081f6880036682526e40f4b_1440w.avis?source=172ae18b&biz_tag=Post' @State pixelMap: PixelMap | undefined = undefined;
loadImageWithUrl(url: string) { let responseCode = http.ResponseCode; let OutData: http.HttpResponse; let imagePackerApi = image.createImagePacker(); let packOpts: image.PackingOption = { format: 'image/jpeg', quality: 98 }; // 确保网络正常 http.createHttp().request(url, { method: http.RequestMethod.GET, connectTimeout: 60000, readTimeout: 60000 }, async (error: BusinessError, data: http.HttpResponse) => { if (error) { console.error(http request failed with. Code: ${error.code}, message: ${error.message}); } else { OutData = data; let code: http.ResponseCode | number = OutData.responseCode; if (responseCode.OK === code) { let imageData: ArrayBuffer = OutData.result as ArrayBuffer; let imageSource: image.ImageSource = image.createImageSource(imageData); class tmp { height: number = 100 width: number = 100 }; let options: Record<string, number | boolean | tmp> = { 'alphaType': 0, // 透明度 'editable': false, // 是否可编辑 'pixelFormat': 3, // 像素格式 'scaleMode': 1, // 缩略值 'size': { height: 100, width: 100 } }; // 创建图片大小 imageSource.createPixelMap(options).then((pixelMap: PixelMap) => { this.pixelMap = pixelMap; this.pixelMap.getImageInfo().then((info: image.ImageInfo) => { console.info('info.width = ' + info.size.width); }).catch((err: BusinessError) => { console.error('Failed ' + err); }) imagePackerApi.packing(pixelMap, packOpts).then(async (buffer: ArrayBuffer) => { try { const context = getContext(this); let helper = photoAccessHelper.getPhotoAccessHelper(context); let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'png'); let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); // 写入文件 await fs.write(file.fd, buffer); promptAction.showToast({ message: '已保存至相册!' }); // 关闭文件 await fs.close(file.fd); } catch (error) { console.error('error is ' + JSON.stringify(error)); } }).catch((error: BusinessError) => { console.error('Failed to pack the image. And the error is: ' + error); }) pixelMap.release(); }) } } } )
}
build() { Row() { Column({ space: 10 }) { Image(this.imgUrl) .width('80%') SaveButton().onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => { if (result === SaveButtonOnClickResult.SUCCESS) { this.loadImageWithUrl(this.imgUrl); } else { promptAction.showToast({ message: '设置权限失败!' }); } }) } .width('100%') } .height('100%') .backgroundColor(0xF1F3F5)
}
/**
保存图片
@param url */ async saveImage(imageUrl: string) { try { let fileNameExtension = this.getFileNameExtension(imageUrl) fileNameExtension = (fileNameExtension == '' || fileNameExtension == 'jfif') ? 'jpg' : fileNameExtension let context = getContext(this) as common.UIAbilityContext; let dirPath = context.filesDir + '/article_images_preview' let fileName = new Date().getTime().toString() if (!fileIo.accessSync(dirPath)) { fileIo.mkdirSync(dirPath) } //下载网络图片,并保存到沙箱 request.downloadFile(context, { url: imageUrl, filePath: ${dirPath}/${fileName}.${fileNameExtension} }) .then((downloadTask) => { downloadTask.on('complete', async () => { try { // 位于应用沙箱的图片uri let srcFileUri = ${dirPath}/${fileName}.${fileNameExtension} let srcFileUris: Array = [fileUri.getUriFromPath(srcFileUri)]; let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); // 指定待保存照片的创建选项,包括文件后缀和照片类型,标题和照片子类型可选 let photoCreationConfigs: Array = [ { title: fileName, // 可选 fileNameExtension: fileNameExtension, photoType: photoAccessHelper.PhotoType.IMAGE, subtype: photoAccessHelper.PhotoSubtype.DEFAULT, // 可选 } ]; // 基于弹窗授权的方式获取媒体库的目标uri let desFileUris: Array = await phAccessHelper.showAssetsCreationDialog(srcFileUris, photoCreationConfigs); if (desFileUris.length > 0) { let desFile: fileIo.File = await fileIo.open(desFileUris[0], fileIo.OpenMode.WRITE_ONLY); let srcFile: fileIo.File = await fileIo.open(srcFileUri, fileIo.OpenMode.READ_ONLY); await fileIo.copyFile(srcFile.fd, desFile.fd); fileIo.closeSync(srcFile); fileIo.closeSync(desFile); promptAction.showToast({ message: '已保存!' }); } else { promptAction.showToast({ message: '保存失败!' }); } fs.rmdir(dirPath); } catch (error) { promptAction.showToast({ message: '保存失败!' }); } }) downloadTask.on('fail', (err: number) => { //下载失败 promptAction.showToast({ message: '保存失败!' }); }) }) .catch((err: BusinessError) => { promptAction.showToast({ message: '保存失败!' }); }) } catch (err) { promptAction.showToast({ message: '保存失败!' }); } } /**
获取文件拓展名
@param url
@returns 文件扩展名,没有则返回空字符串 */ getFileNameExtension(url: string): string { // 查找最后一个点(.)的位置 const lastIndex = url.lastIndexOf('.'); let fileNameExtension = '' if (lastIndex === -1 || lastIndex === url.length - 1) { fileNameExtension = '' } else { // 提取从最后一个点到字符串末尾的子字符串 let subStr = url.substring(lastIndex); // 使用正则表达式匹配文件后缀名 const extensionMatch = subStr.match(/.([a-zA-Z0-9]+)(?:[\?#]|$)/); // 如果匹配到后缀名,则返回(去掉点号) fileNameExtension = extensionMatch ? extensionMatch[1].toLowerCase() : ''; } return fileNameExtension } } [/code]
0 notes
Photo

GOD OF THE UNDERWORLD Logo and logotype design created for Milan-based video artist Videoplasm / VPlasm. @rod_vplasm Anubis is in profile with the constellation of Orion and the North Star in the background - both very important within Egyptian astronomy. #Vplasm #visualart #videomapping #pixelmapping #lightingdesign #Typography #Logo #LogoDesign #GraphicArt #GraphicDesign #Paul Nicholson #Number3 #3 #III https://www.instagram.com/p/CNHQFqtBAVC/?igshid=197l20kd31djk
#vplasm#visualart#videomapping#pixelmapping#lightingdesign#typography#logo#logodesign#graphicart#graphicdesign#paul#number3#3#iii
1 note
·
View note
Video
instagram
L.E.D backdrop and light up podium #artisticscience #creative #technical #solutions #design #events #showproduction #touring #corporateevents #corporatetheatre #backdrop #stage #stagedesign #stagelighting #lighting #lightingdesign #pixelart #pixelmapping #naplesflorida #losangeles #miami #sarasota #orlando (at Artis-Naples)
#pixelmapping#sarasota#backdrop#orlando#pixelart#artisticscience#corporatetheatre#naplesflorida#corporateevents#events#lightingdesign#miami#design#solutions#technical#touring#lighting#losangeles#stage#stagedesign#creative#stagelighting#showproduction
1 note
·
View note
Photo

Aca vamos haciendo presencia nuevamente & haciendo lo que nos apasiona..!Asi fue que rompió @rauwalejandro en @altosdechavondr con dos días de show consecutivo 🔥🔥 #pantallasled #pixelmapping #ledscreen #novastar #novastar4k #grandma3fullsize #varilite #varilitevl3500 #stagedesign #sonidodass #digico (at Altos De Chavón DR) https://www.instagram.com/p/CV9j8CWtXuBzfkPmnulJqwKpQr0of6GVxeRoq80/?utm_medium=tumblr
#pantallasled#pixelmapping#ledscreen#novastar#novastar4k#grandma3fullsize#varilite#varilitevl3500#stagedesign#sonidodass#digico
0 notes
Photo

LED . interactive light sculpture #interactive #interactiveart #audiovisual #pixelmapping #videomapping #lightart #videoart #digitalart #computerart #contemporaryart #generative #generativeart #openframeworks #creativecoding #realtime #mediaart #newmediaart #abstractart #projectionart #lightinstallation #videoinstallation #performanceart #soundart #augmentedreality #immersiveart #installationart #projectionmapping #stagedesign #architecturalspaceintervention #mayerempl (at Munich, Germany)
#immersiveart#interactiveart#videoart#computerart#creativecoding#abstractart#soundart#interactive#lightart#performanceart#generative#augmentedreality#realtime#mayerempl#lightinstallation#projectionmapping#generativeart#architecturalspaceintervention#audiovisual#pixelmapping#mediaart#videomapping#projectionart#contemporaryart#installationart#openframeworks#digitalart#stagedesign#newmediaart#videoinstallation
1 note
·
View note
Photo

Rolando Oficina Pixel Mapping #pixelmapping #ocuparespacos https://www.instagram.com/p/B3xfTf4lY844EARXC3BCC6MQ9CtZaaAYl9OH3M0/?igshid=19r9wc59w4rki
0 notes
Photo

Shop updated with a system of 24 Digistrip 40 video strips from ProLights. New in 2018, this is a complete package with driver, cables and flight case. Visit www.gearwise.se for more info and our full range of premium used audio, lighting, video and staging equipment. #prolights #digistrip #ledstrip #videostrip #pixelmapping #lightingdesigner #eventlighting https://www.instagram.com/p/BysBqq2oj1_/?igshid=1l5jo1fxwcvkt
0 notes