我不得不从 base64 读取我的图像源来抖动Image对象。
Image img = Image.memory(base64Decode(BASE64_STRING));
Run Code Online (Sandbox Code Playgroud)
然后我想把图像作为容器背景。但 DecorationImage 只接受ImageProvider。
如何将图像转换为 ImageProvider?或者有没有其他方法可以将 base64 图像提供给 ImageProvider?
Container(
decoration: BoxDecoration(
color: Colors.green,
image: DecorationImage(
image: img // <-- Expecting ImageProvider
)
)
Run Code Online (Sandbox Code Playgroud) 我有一个ListView带ListTile。每个ListTile都有一个titlewith Text、subtitlewithText和leadingwith Image。
现在,图像太大并且垂直延伸到下一行,与那里的图像重叠。
如何确保图像保持在边界内?
编辑:
我不想给图像一个固定的大小,而是让它调整到由标题+副标题的固有高度给出的列表图块的高度。
我有一个简单的图像,我想将其设置为半透明。我已经看到了一些方法来做到这一点,但他们都没有谈论接受类型为 widget 的opacityown参数。是否可以使用此参数永久更改不透明度?Image.assetAnimation
Image.asset(
"assets/images/triangles_small.png",
height: 380,
),
Run Code Online (Sandbox Code Playgroud)
我尝试过似乎仅适用于颜色的混合模式,即 colorblendmode。有什么方法可以实现CSS的mix-blend-mode吗?
Stack(
children: <Widget>[
Image.asset(
"asset/text.PNG",
height: double.maxFinite,
width: double.maxFinite,
fit: BoxFit.fitHeight,
color: Colors.red,
colorBlendMode: BlendMode.multiply,
),
Image.asset("asset/face.jpg",
width: double.maxFinite,
fit: BoxFit.fitHeight,
color: Colors.red,
colorBlendMode: BlendMode.multiply),
],
),
Run Code Online (Sandbox Code Playgroud)
这会导致类似: 上面代码的输出
我已尝试以下所有方法Widget从网络加载图像:
Image.network()CachedNetworkImage()还有他们的ImageProvider:
NetworkImageCachedNetworkImageProvider无法bool选择不缓存图像。我发现的唯一方法是加载ImageProvider类似的内容initState(),然后evict()立即调用。
我真的不知道这是否真的有效,或者这是否是最好的方法......
有什么方法可以阻止“本地”网络缓存吗?
我正在制作一个 Android 应用程序,并且在使用图像选择器插件时;
final pickedFile = await ImagePicker().getImage(source: ImageSource.gallery);
Run Code Online (Sandbox Code Playgroud)
File image = File(pickedFile.path);
Run Code Online (Sandbox Code Playgroud)
“图像”是应用程序缓存中原始图像的副本,但是,我想直接使用原始图像的路径将其保存在我的应用程序中,因为我不希望应用程序缓存大小增加。我看到不推荐使用的方法“pickImage”完成了这一点(不复制到缓存),但新的“getImage”似乎自动复制,并且“图像的路径”是缓存图像的路径。
如何在不缓存的情况下仅获取所选图像的原始路径?(我假设使用原始文件的路径仍然可以在应用程序中显示它FileImage(File(originalPath)),这是正确的假设吗?)
为了在谷歌地图google_maps_flutter上显示自定义小部件,我使用了一个非常方便的函数,可以将任何Widget(包括包含图像的)转换为Image,然后将其转换为Uint8List我需要的。它在 iOS 和 Android 上运行良好。
Future createImageFromWidget( Widget widget){
final RenderRepaintBoundary repaintBoundary = RenderRepaintBoundary();
final RenderView renderView = RenderView(
child: RenderPositionedBox(alignment: Alignment.center, child: repaintBoundary),
configuration: ViewConfiguration(size: const Size.square(300.0), devicePixelRatio: ui.window.devicePixelRatio),
window: null,
);
final PipelineOwner pipelineOwner = PipelineOwner()..rootNode = renderView;
renderView.prepareInitialFrame();
final BuildOwner buildOwner = BuildOwner(focusManager: FocusManager());
final RenderObjectToWidgetElement<RenderBox> rootElement = RenderObjectToWidgetAdapter<RenderBox>(
container: repaintBoundary,
child: Directionality(
textDirection: TextDirection.ltr,
child: IntrinsicHeight(child: IntrinsicWidth(child: widget)),
),
).attachToRenderTree(buildOwner);
buildOwner..buildScope(rootElement)..finalizeTree();
pipelineOwner..flushLayout()..flushCompositingBits()..flushPaint();
return repaintBoundary.toImage(pixelRatio: ui.window.devicePixelRatio)
.then((image) => image.toByteData(format: …Run Code Online (Sandbox Code Playgroud) google-maps google-maps-markers flutter flutter-image flutter-web
我正在尝试构建一个具有给定宽度和高度的图像网格,将它们包裹在里面Containers,并fit: BoxFit.fill在选择图像时使用能够设置边框(我不关心保持图像长宽比,我想每个容器的总宽度和高度相同)。
问题是,当图像被点击后重新绘制时,我注意到出现白色闪烁。当图像较少时,这似乎不会发生,但当图像超过 15 个时,就会出现噪声。
我尝试添加gaplessPlayback: true图像小部件,正如我在此处找到的那样,但这并没有解决我的问题。
这是显示我的问题的 gif(我使用了 16 张图像,尺寸为 1920x1080):
编辑:
我忘记指出这只是一个例子,我在代码中使用了边框,但就我而言,我还想向容器添加填充以使图像变小(就像在 android 照片库中一样),这意味着点击的图像每次都应该重新绘制。
这是我的代码:
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() {
// See https://github.com/flutter/flutter/wiki/Desktop-shells#target-platform-override
debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia;
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(body: ImageGridView()),
);
}
}
class ImageGridView extends StatelessWidget {
List<File> _fileList = [];
ImageGridView(){
_fileList = [
File('C:/flutter/img/1.jpg'),
File('C:/flutter/img/3.jpg'),
File('C:/flutter/img/4.jpg'),
File('C:/flutter/img/5.jpg'), …Run Code Online (Sandbox Code Playgroud) 我使用 Image.network() 显示来自 URL 的图像,这就是我使用它的方式
Image image = Image.network(
_auth.currentUser!.photoURL!,
width: 100.getWidth(context),
height: 100.getWidth(context),
frameBuilder: (context, child, frame, wasSynchronouslyLoaded) {
return wasSynchronouslyLoaded
? child
: _profileImagePlaceholder(context);
},
loadingBuilder: (context, child, loadingProgress) {
return loadingProgress == null
? child
: _profileImagePlaceholder(context);
},
errorBuilder: (context, error, stackTrace) {
return _profileImagePlaceholder(context);
},
);
Run Code Online (Sandbox Code Playgroud)
但即使当我设置 errorBuilder 甚至用 try/catch 包装整个事情时这NetworkImageLoadException仍然显示
完全例外
The following NetworkImageLoadException was thrown resolving an image codec:
HTTP request failed, statusCode: 403,
When the exception was thrown, this was the …Run Code Online (Sandbox Code Playgroud) 从网络本地主机检索图像文件时,http://10.0.2.2:8000出现以下错误:
\nConnection closed while receiving data.
当我从 URL 调用数据(仅限图像)时出现错误。
\n请注意,我使用的是本地服务器。
\nI\xe2\x80\x99m 试图将图像放入其中Image.network(),这是图像代码。
Image.network(urllink)\nRun Code Online (Sandbox Code Playgroud)\n相同的 URL 在本地主机浏览器和邮递员中也可以正常工作。
\n我正在尝试检索装饰框小部件中的图像。
\n当我在网络图像函数中粘贴直接 url 时,相同的 url 和图像可以工作,但当我尝试通过 api 获取照片名时发生错误。\n我得到的照片名和 API 工作正常。没有任何问题。
child: FutureBuilder<MatrimonyProfileData>(\n future: futureMData,\n builder: (context, snapshot) {\n if (snapshot.hasData) {\n // String matrimonyUrl = \'/$matrimonyprofileUrl\';\n String photoName = snapshot.data!.matrimonies.photo;\n\n print(photoName);\n //var fullUrl = _url + apiUrl\n\n var url;\n // urllink = \'http://10.0.2.2:8000/matrimony/profile.jpg\';\n\n **url = (webLink + matrimony + photoName);\n print(url);\n String urllink = Url;**\n …Run Code Online (Sandbox Code Playgroud) flutter flutter-test flutter-dependencies flutter-layout flutter-image